From 210b08f6c49d2305402193c22acf16efe2c7ecc6 Mon Sep 17 00:00:00 2001 From: scoen Date: Tue, 29 Nov 2022 15:12:17 +0100 Subject: [PATCH 01/15] fix: cucumber name clash --- src/lib/coloredConsole.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/lib/coloredConsole.ts b/src/lib/coloredConsole.ts index 8aba58ed..92021fd7 100644 --- a/src/lib/coloredConsole.ts +++ b/src/lib/coloredConsole.ts @@ -1,3 +1,8 @@ +// the cucumber framework uses the 'console' module which also modifies the console object. +// We need to import the console specifically otherwise we run into duplicate names and node +// will kill the whole processes +import console from "node:console" + const translate = (color) => { switch (color) { case "red": From abb046bd1aacff87afed401cdf93a4eb32fadcad Mon Sep 17 00:00:00 2001 From: scoen Date: Tue, 29 Nov 2022 15:12:35 +0100 Subject: [PATCH 02/15] fix: remove .js types file --- src/types/wdi5.types.js | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 src/types/wdi5.types.js diff --git a/src/types/wdi5.types.js b/src/types/wdi5.types.js deleted file mode 100644 index d9426d5c..00000000 --- a/src/types/wdi5.types.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict" -Object.defineProperty(exports, "__esModule", { value: true }) From 4dc9f215b24e0b6c58bd50212e4f2fb55a1ac45a Mon Sep 17 00:00:00 2001 From: scoen Date: Wed, 30 Nov 2022 16:54:34 +0100 Subject: [PATCH 03/15] fix: use an alias to load the console module --- src/lib/coloredConsole.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/lib/coloredConsole.ts b/src/lib/coloredConsole.ts index 92021fd7..0f95ab84 100644 --- a/src/lib/coloredConsole.ts +++ b/src/lib/coloredConsole.ts @@ -1,7 +1,7 @@ // the cucumber framework uses the 'console' module which also modifies the console object. // We need to import the console specifically otherwise we run into duplicate names and node -// will kill the whole processes -import console from "node:console" +// will kill the whole processes. +import * as coloredConsole from "console" const translate = (color) => { switch (color) { @@ -28,8 +28,8 @@ export const colored = (color) => (msg, ...other) => typeof msg === "string" - ? console.log(`\x1b[${translate(color)}m%s\x1b[0m`, msg, ...other) - : console.log(msg, ...other) + ? coloredConsole.log(`\x1b[${translate(color)}m%s\x1b[0m`, msg, ...other) + : coloredConsole.log(msg, ...other) const _ = { red: colored("red"), @@ -40,5 +40,5 @@ const _ = { cyan: colored("cyan"), default: colored("default") } - -export const chalk = Object.assign(console, { ..._ }) +// we need to use a copy of the original object as 'coloredConsole' is a frozen object +export const chalk = Object.assign({ ...coloredConsole }, { ..._ }) From 003d95bb6cbeef793a8a6b38095134b54937a2a6 Mon Sep 17 00:00:00 2001 From: Volker Buzek Date: Mon, 12 Dec 2022 16:49:54 +0100 Subject: [PATCH 04/15] refactor: use dynamic import depending on node version --- src/lib/coloredConsole.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/lib/coloredConsole.ts b/src/lib/coloredConsole.ts index 0f95ab84..c1090a9d 100644 --- a/src/lib/coloredConsole.ts +++ b/src/lib/coloredConsole.ts @@ -1,7 +1,13 @@ // the cucumber framework uses the 'console' module which also modifies the console object. // We need to import the console specifically otherwise we run into duplicate names and node // will kill the whole processes. -import * as coloredConsole from "console" + +const node14Up = parseInt(process.versions.node.substring(0, 2)) > 14 +if (node14Up) { + ;(async () => { + global.console = await import("node:console") + })() +} const translate = (color) => { switch (color) { @@ -28,8 +34,8 @@ export const colored = (color) => (msg, ...other) => typeof msg === "string" - ? coloredConsole.log(`\x1b[${translate(color)}m%s\x1b[0m`, msg, ...other) - : coloredConsole.log(msg, ...other) + ? console.log(`\x1b[${translate(color)}m%s\x1b[0m`, msg, ...other) + : console.log(msg, ...other) const _ = { red: colored("red"), @@ -41,4 +47,4 @@ const _ = { default: colored("default") } // we need to use a copy of the original object as 'coloredConsole' is a frozen object -export const chalk = Object.assign({ ...coloredConsole }, { ..._ }) +export const chalk = Object.assign(console, { ..._ }) From 19d277799b8b54377470e120b4a59cb1c36cf185 Mon Sep 17 00:00:00 2001 From: Volker Buzek Date: Mon, 12 Dec 2022 17:15:04 +0100 Subject: [PATCH 05/15] refactor: console scope --- src/lib/coloredConsole.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/lib/coloredConsole.ts b/src/lib/coloredConsole.ts index c1090a9d..573e27fe 100644 --- a/src/lib/coloredConsole.ts +++ b/src/lib/coloredConsole.ts @@ -3,9 +3,10 @@ // will kill the whole processes. const node14Up = parseInt(process.versions.node.substring(0, 2)) > 14 +let console = global.console if (node14Up) { ;(async () => { - global.console = await import("node:console") + console = await import("node:console") })() } From 02300de0520856b7dbbbf18ce1c649cb1e126b80 Mon Sep 17 00:00:00 2001 From: scoen Date: Mon, 9 Jan 2023 15:28:13 +0100 Subject: [PATCH 06/15] chore: add cucumber tests --- examples/cucumber/features/login.feature | 12 + .../features/pageobjects/login.page.js | 40 + .../cucumber/features/pageobjects/page.js | 13 + .../features/pageobjects/secure.page.js | 15 + .../features/step-definitions/steps.js | 21 + examples/cucumber/package.json | 15 + examples/cucumber/wdio.conf.js | 335 +++ package-lock.json | 2308 ++++++++++++++++- package.json | 4 +- 9 files changed, 2656 insertions(+), 107 deletions(-) create mode 100644 examples/cucumber/features/login.feature create mode 100644 examples/cucumber/features/pageobjects/login.page.js create mode 100644 examples/cucumber/features/pageobjects/page.js create mode 100644 examples/cucumber/features/pageobjects/secure.page.js create mode 100644 examples/cucumber/features/step-definitions/steps.js create mode 100644 examples/cucumber/package.json create mode 100644 examples/cucumber/wdio.conf.js diff --git a/examples/cucumber/features/login.feature b/examples/cucumber/features/login.feature new file mode 100644 index 00000000..e6dd0f87 --- /dev/null +++ b/examples/cucumber/features/login.feature @@ -0,0 +1,12 @@ +Feature: The Internet Guinea Pig Website + + Scenario Outline: As a user, I can log into the secure area + + Given I am on the login page + When I login with and + Then I should see a flash message saying + + Examples: + | username | password | message | + | tomsmith | SuperSecretPassword! | You logged into a secure area! | + | foobar | barfoo | Your username is invalid! | diff --git a/examples/cucumber/features/pageobjects/login.page.js b/examples/cucumber/features/pageobjects/login.page.js new file mode 100644 index 00000000..0fc4f715 --- /dev/null +++ b/examples/cucumber/features/pageobjects/login.page.js @@ -0,0 +1,40 @@ +const Page = require("./page") + +/** + * sub page containing specific selectors and methods for a specific page + */ +class LoginPage extends Page { + /** + * define selectors using getter methods + */ + get inputUsername() { + return $("#username") + } + + get inputPassword() { + return $("#password") + } + + get btnSubmit() { + return $('button[type="submit"]') + } + + /** + * a method to encapsule automation code to interact with the page + * e.g. to login using username and password + */ + async login(username, password) { + await this.inputUsername.setValue(username) + await this.inputPassword.setValue(password) + await this.btnSubmit.click() + } + + /** + * overwrite specific options to adapt it to page object + */ + open() { + return super.open("login") + } +} + +module.exports = new LoginPage() diff --git a/examples/cucumber/features/pageobjects/page.js b/examples/cucumber/features/pageobjects/page.js new file mode 100644 index 00000000..3f8af432 --- /dev/null +++ b/examples/cucumber/features/pageobjects/page.js @@ -0,0 +1,13 @@ +/** + * main page object containing all methods, selectors and functionality + * that is shared across all page objects + */ +module.exports = class Page { + /** + * Opens a sub page of the page + * @param path path of the sub page (e.g. /path/to/page.html) + */ + open(path) { + return browser.url(`https://the-internet.herokuapp.com/${path}`) + } +} diff --git a/examples/cucumber/features/pageobjects/secure.page.js b/examples/cucumber/features/pageobjects/secure.page.js new file mode 100644 index 00000000..b02a0e6c --- /dev/null +++ b/examples/cucumber/features/pageobjects/secure.page.js @@ -0,0 +1,15 @@ +const Page = require("./page") + +/** + * sub page containing specific selectors and methods for a specific page + */ +class SecurePage extends Page { + /** + * define selectors using getter methods + */ + get flashAlert() { + return $("#flash") + } +} + +module.exports = new SecurePage() diff --git a/examples/cucumber/features/step-definitions/steps.js b/examples/cucumber/features/step-definitions/steps.js new file mode 100644 index 00000000..1b99f4e8 --- /dev/null +++ b/examples/cucumber/features/step-definitions/steps.js @@ -0,0 +1,21 @@ +const { Given, When, Then } = require("@wdio/cucumber-framework") + +const LoginPage = require("../pageobjects/login.page") +const SecurePage = require("../pageobjects/secure.page") + +const pages = { + login: LoginPage +} + +Given(/^I am on the (\w+) page$/, async (page) => { + await pages[page].open() +}) + +When(/^I login with (\w+) and (.+)$/, async (username, password) => { + await LoginPage.login(username, password) +}) + +Then(/^I should see a flash message saying (.*)$/, async (message) => { + await expect(SecurePage.flashAlert).toBeExisting() + await expect(SecurePage.flashAlert).toHaveTextContaining(message) +}) diff --git a/examples/cucumber/package.json b/examples/cucumber/package.json new file mode 100644 index 00000000..7c2074d6 --- /dev/null +++ b/examples/cucumber/package.json @@ -0,0 +1,15 @@ +{ + "devDependencies": { + "@wdio/cli": "^7.27.0", + "@wdio/cucumber-framework": "^7.27.0", + "@wdio/local-runner": "^7.27.0", + "@wdio/mocha-framework": "^7.26.0", + "@wdio/spec-reporter": "^7.26.0", + "chromedriver": "latest", + "wdio-chromedriver-service": "^7.3.2", + "wdio-ui5-service": "*" + }, + "scripts": { + "test": "wdio run ./wdio.conf.js" + } +} diff --git a/examples/cucumber/wdio.conf.js b/examples/cucumber/wdio.conf.js new file mode 100644 index 00000000..c9b21411 --- /dev/null +++ b/examples/cucumber/wdio.conf.js @@ -0,0 +1,335 @@ +exports.config = { + // ==================== + // wdi5 Configuration + // ==================== + // + // wdi5: { + // screenshotPath: require("path").join("some", "dir", "for", "screenshots"),c // [optional] {string}, default: "" + // screenshotsDisabled: false, // [optional] {boolean}, default: false; if set to true, screenshots won't be taken and not written to file system + // logLevel: "error", // [optional] error | verbose | silent, default: "error" + // skipInjectUI5OnStart: false, // [optional] {boolean}, default: false; true when UI5 is not on the start page, you need to later call .injectUI5() manually + // waitForUI5Timeout: 15000 // [optional] {number}, default: 15000; maximum waiting time in milliseconds while checking for UI5 availability + // }, + // + // ==================== + // Runner Configuration + // ==================== + // + // + // ================== + // Specify Test Files + // ================== + // Define which test specs should run. The pattern is relative to the directory + // from which `wdio` was called. + // + // 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. + // + // If you are calling `wdio` from an NPM script (see https://docs.npmjs.com/cli/run-script), + // then the current working directory is where your `package.json` resides, so `wdio` + // will be called from there. + // + specs: ["./features/**/*.feature"], + // 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. + // + maxInstances: 10, + // + // 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 + // + capabilities: [ + { + // maxInstances can get overwritten per capability. So if you have an in-house Selenium + // grid with only 5 firefox instances available you can make sure that not more than + // 5 instances get started at a time. + maxInstances: 5, + // + browserName: "chrome", + "goog:chromeOptions": { + args: + process.argv.indexOf("--headless") > -1 + ? ["--headless"] + : process.argv.indexOf("--debug") > -1 + ? ["window-size=1440,800", "--auto-open-devtools-for-tabs"] + : ["window-size=1440,800"] + }, + acceptInsecureCerts: true + // If outputDir is provided WebdriverIO can capture driver session logs + // it is possible to configure which logTypes to include/exclude. + // excludeDriverLogs: ['*'], // pass '*' to exclude all driver session logs + // excludeDriverLogs: ['bugreport', 'server'], + } + ], + // + // =================== + // Test Configurations + // =================== + // Define all options that are relevant for the WebdriverIO instance here + // + // Level of logging verbosity: trace | debug | info | warn | error | silent + logLevel: "error", + // + // 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 `/` (like `some/path`), the base url + // gets prepended directly. + baseUrl: "https://sapui5.hana.ondemand.com", + // + // Default timeout for all waitFor* commands. + waitforTimeout: 10000, + // + // Default timeout in milliseconds for request + // if browser driver or grid doesn't send response + connectionRetryTimeout: process.argv.indexOf("--debug") > -1 ? 1200000 : 120000, + + // + // Default request retries count + connectionRetryCount: 3, + // + // 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: ["chromedriver", "ui5"], + + // 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: "cucumber", + + // If you are using Cucumber you need to specify the location of your step definitions. + cucumberOpts: { + // (file/dir) require files before executing features + require: ["./features/**/step-definitions/steps.js"], + // show full backtrace for errors + backtrace: false, + // ("extension:module") require files with the given EXTENSION after requiring MODULE (repeatable) + requireModule: [], + // invoke formatters without executing steps + dryRun: false, + // abort the run on first failure + failFast: false, + // hide step definition snippets for pending steps + snippets: true, + // hide source uris + source: true, + // fail if there are any undefined or pending steps + strict: false, + // (expression) only execute the features or scenarios with tags matching the expression + tagExpression: "", + // timeout for step definitions + timeout: 60000, + // Enable this config to treat undefined definitions as warnings. + ignoreUndefinedDefinitions: false + }, + // + // 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 specfiles 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"], + + // + // Options to be passed to Mocha. + // See the full list at http://mochajs.org/ + mochaOpts: { + ui: "bdd", + timeout: process.argv.indexOf("--debug") > -1 ? 600000 : 60000 + } + // + // ===== + // 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. + /** + * Gets executed once before all workers get launched. + * @param {Object} config wdio configuration object + * @param {Array.} capabilities list of capabilities details + */ + // onPrepare: function (config, capabilities) { + // }, + /** + * Gets executed before a worker process is spawned and can be used to initialise specific service + * for that worker as well as modify runtime environments in an async fashion. + * @param {String} cid capability id (e.g 0-0) + * @param {[type]} caps object containing capabilities for session that will be spawn in the worker + * @param {[type]} specs specs to be run in the worker process + * @param {[type]} args object that will be merged with the main configuration once worker is initialized + * @param {[type]} execArgv list of string arguments passed to the worker process + */ + // onWorkerStart: function (cid, caps, specs, args, execArgv) { + // }, + /** + * Gets executed just after a worker process has exited. + * @param {String} cid capability id (e.g 0-0) + * @param {Number} exitCode 0 - success, 1 - fail + * @param {[type]} specs specs to be run in the worker process + * @param {Number} retries number of retries used + */ + // onWorkerEnd: function (cid, exitCode, specs, retries) { + // }, + /** + * Gets executed just before initialising the webdriver session and test framework. It allows you + * to manipulate configurations depending on the capability or spec. + * @param {Object} config wdio configuration object + * @param {Array.} capabilities list of capabilities details + * @param {Array.} specs List of spec file paths that are to be run + * @param {String} cid worker id (e.g. 0-0) + */ + // beforeSession: function (config, capabilities, specs, cid) { + // }, + /** + * Gets executed before test execution begins. At this point you can access to all global + * variables like `browser`. It is the perfect place to define custom commands. + * @param {Array.} capabilities list of capabilities details + * @param {Array.} specs List of spec file paths that are to be run + * @param {Object} browser instance of created browser/device session + */ + // before: function (capabilities, specs) { + // }, + /** + * Runs before a WebdriverIO command gets executed. + * @param {String} commandName hook command name + * @param {Array} args arguments that command would receive + */ + // beforeCommand: function (commandName, args) { + // }, + /** + * Hook that gets executed before the suite starts + * @param {Object} suite suite details + */ + // beforeSuite: function (suite) { + // }, + /** + * Function to be executed before a test (in Mocha/Jasmine) starts. + */ + // beforeTest: function (test, context) { + // }, + /** + * Hook that gets executed _before_ a hook within the suite starts (e.g. runs before calling + * beforeEach in Mocha) + */ + // beforeHook: function (test, context) { + // }, + /** + * Hook that gets executed _after_ a hook within the suite starts (e.g. runs after calling + * afterEach in Mocha) + */ + // afterHook: function (test, context, { error, result, duration, passed, retries }) { + // }, + /** + * Function to be executed after a test (in Mocha/Jasmine only) + * @param {Object} test test object + * @param {Object} context scope object the test was executed with + * @param {Error} result.error error object in case the test fails, otherwise `undefined` + * @param {Any} result.result return object of test function + * @param {Number} result.duration duration of test + * @param {Boolean} result.passed true if test has passed, otherwise false + * @param {Object} result.retries informations to spec related retries, e.g. `{ attempts: 0, limit: 0 }` + */ + // afterTest: function(test, context, { error, result, duration, passed, retries }) { + // }, + + /** + * Hook that gets executed after the suite has ended + * @param {Object} suite suite details + */ + // afterSuite: function (suite) { + // }, + /** + * Runs after a WebdriverIO command gets executed + * @param {String} commandName hook command name + * @param {Array} args arguments that command would receive + * @param {Number} result 0 - command success, 1 - command error + * @param {Object} error error object if any + */ + // afterCommand: function (commandName, args, result, error) { + // }, + /** + * Gets executed after all tests are done. You still have access to all global variables from + * the test. + * @param {Number} result 0 - test pass, 1 - test fail + * @param {Array.} capabilities list of capabilities details + * @param {Array.} specs List of spec file paths that ran + */ + // after: function (result, capabilities, specs) { + // }, + /** + * Gets executed right after terminating the webdriver session. + * @param {Object} config wdio configuration object + * @param {Array.} capabilities list of capabilities details + * @param {Array.} specs List of spec file paths that ran + */ + // afterSession: function (config, capabilities, specs) { + // }, + /** + * Gets executed after all workers got shut down and the process is about to exit. An error + * thrown in the onComplete hook will result in the test run failing. + * @param {Object} exitCode 0 - success, 1 - fail + * @param {Object} config wdio configuration object + * @param {Array.} capabilities list of capabilities details + * @param {} results object containing test results + */ + // onComplete: function(exitCode, config, capabilities, results) { + // }, + /** + * Gets executed when a refresh happens. + * @param {String} oldSessionId session ID of the old session + * @param {String} newSessionId session ID of the new session + */ + // onReload: function(oldSessionId, newSessionId) { + // } +} diff --git a/package-lock.json b/package-lock.json index 2d039008..cd582fe7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,8 @@ ".", "examples/fe-app", "examples/ui5-js-app", - "examples/ui5-ts-app" + "examples/ui5-ts-app", + "examples/cucumber" ], "dependencies": { "dotenv": "^16.0.3", @@ -59,6 +60,18 @@ "npm": ">=7" } }, + "examples/cucumber": { + "devDependencies": { + "@wdio/cli": "^7.27.0", + "@wdio/cucumber-framework": "^7.27.0", + "@wdio/local-runner": "^7.27.0", + "@wdio/mocha-framework": "^7.26.0", + "@wdio/spec-reporter": "^7.26.0", + "chromedriver": "latest", + "wdio-chromedriver-service": "^7.3.2", + "wdio-ui5-service": "*" + } + }, "examples/fe-app": { "name": "incidents", "version": "0.0.1", @@ -1959,6 +1972,16 @@ "integrity": "sha512-llLJZ8OAlZrjGlBvamm6Zdo/HmGAcCLq5gx7cSwUX8No+n/8ip+oaC4x33IdZIif8+Rh5dQUIZXmfbSghiOmNQ==", "dev": true }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, "node_modules/@commitlint/cli": { "version": "17.2.0", "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-17.2.0.tgz", @@ -2232,6 +2255,279 @@ "node": ">=12" } }, + "node_modules/@cucumber/ci-environment": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@cucumber/ci-environment/-/ci-environment-9.1.0.tgz", + "integrity": "sha512-jdnF6APXP3GawMue8kdMxhu6TBhyRUO4KDRxTowf06NtclLjIw2Ybpo9IcIOMvE8kHukvJyM00uxWX+CfS7JgQ==", + "dev": true + }, + "node_modules/@cucumber/cucumber": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@cucumber/cucumber/-/cucumber-8.6.0.tgz", + "integrity": "sha512-htkP/MlaYmgDId1Z2+7OQnH9aBd4Ui/Lk6PEmvMvP52ixPSUOv0MrP4/HUSECVXY0TI8GG7Ho03uLf6lieiFvw==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@cucumber/ci-environment": "9.1.0", + "@cucumber/cucumber-expressions": "16.0.0", + "@cucumber/gherkin": "24.0.0", + "@cucumber/gherkin-streams": "5.0.1", + "@cucumber/gherkin-utils": "8.0.0", + "@cucumber/html-formatter": "20.0.0", + "@cucumber/message-streams": "4.0.1", + "@cucumber/messages": "19.1.2", + "@cucumber/tag-expressions": "4.1.0", + "assertion-error-formatter": "^3.0.0", + "capital-case": "^1.0.4", + "chalk": "^4.1.2", + "cli-table3": "0.6.2", + "commander": "^9.0.0", + "debug": "^4.3.4", + "duration": "^0.2.2", + "durations": "^3.4.2", + "figures": "^3.2.0", + "glob": "^7.1.6", + "has-ansi": "^4.0.1", + "indent-string": "^4.0.0", + "is-installed-globally": "^0.4.0", + "is-stream": "^2.0.0", + "knuth-shuffle-seeded": "^1.0.6", + "lodash.merge": "^4.6.2", + "lodash.mergewith": "^4.6.2", + "mz": "^2.7.0", + "progress": "^2.0.3", + "resolve-pkg": "^2.0.0", + "semver": "7.3.7", + "stack-chain": "^2.0.0", + "string-argv": "^0.3.1", + "strip-ansi": "6.0.1", + "supports-color": "^8.1.1", + "tmp": "^0.2.1", + "util-arity": "^1.1.0", + "verror": "^1.10.0", + "yup": "^0.32.11" + }, + "bin": { + "cucumber-js": "bin/cucumber.js" + }, + "engines": { + "node": "12 || 14 || >=16" + } + }, + "node_modules/@cucumber/cucumber-expressions": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@cucumber/cucumber-expressions/-/cucumber-expressions-16.0.0.tgz", + "integrity": "sha512-HTh+Pg7oQ5aLuCkSbD2Q6jBaE40M3R/XaLEz+UqD5d9dZRu6P38W4LTooV5bV6dZgBunlMLK8+6ug2ziYvRddw==", + "dev": true, + "dependencies": { + "regexp-match-indices": "1.0.2" + } + }, + "node_modules/@cucumber/cucumber/node_modules/@cucumber/gherkin": { + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/@cucumber/gherkin/-/gherkin-24.0.0.tgz", + "integrity": "sha512-b7OsnvX1B8myDAKMc+RAiUX9bzgtNdjGsiMj10O13xu2HBWIOQ19EqBJ4xLO5CFG/lGk1J/+L0lANQVowxLVBg==", + "dev": true, + "dependencies": { + "@cucumber/messages": "^19.0.0" + } + }, + "node_modules/@cucumber/cucumber/node_modules/@cucumber/messages": { + "version": "19.1.2", + "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-19.1.2.tgz", + "integrity": "sha512-vhWkNmQco+7tk/DWqpN0/R9KTNvsKsXVfZ7IsJs+dEeWmTuRztklHq8lJalwMSQBl71+2/KqGHzOO4BMTC9wIQ==", + "dev": true, + "dependencies": { + "@types/uuid": "8.3.4", + "class-transformer": "0.5.1", + "reflect-metadata": "0.1.13", + "uuid": "8.3.2" + } + }, + "node_modules/@cucumber/cucumber/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@cucumber/cucumber/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@cucumber/cucumber/node_modules/has-ansi": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-4.0.1.tgz", + "integrity": "sha512-Qr4RtTm30xvEdqUXbSBVWDu+PrTokJOwe/FU+VdfJPk+MXAPoeOzKpRyrDTnZIJwAkQ4oBLTU53nu0HrkF/Z2A==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@cucumber/cucumber/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@cucumber/cucumber/node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/@cucumber/cucumber/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@cucumber/gherkin": { + "version": "26.0.2", + "resolved": "https://registry.npmjs.org/@cucumber/gherkin/-/gherkin-26.0.2.tgz", + "integrity": "sha512-t5eSslBHwHIfzuEjATqIJaCOTIlj/bqw8N4W6HIpDS6dgcZZYBBhLzjDWZP8CAkDF/CmoSwQ3jRsC1eyLbnKog==", + "dev": true, + "dependencies": { + "@cucumber/messages": "^21.0.0" + } + }, + "node_modules/@cucumber/gherkin-streams": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@cucumber/gherkin-streams/-/gherkin-streams-5.0.1.tgz", + "integrity": "sha512-/7VkIE/ASxIP/jd4Crlp4JHXqdNFxPGQokqWqsaCCiqBiu5qHoKMxcWNlp9njVL/n9yN4S08OmY3ZR8uC5x74Q==", + "dev": true, + "dependencies": { + "commander": "9.1.0", + "source-map-support": "0.5.21" + }, + "bin": { + "gherkin-javascript": "bin/gherkin" + }, + "peerDependencies": { + "@cucumber/gherkin": ">=22.0.0", + "@cucumber/message-streams": ">=4.0.0", + "@cucumber/messages": ">=17.1.1" + } + }, + "node_modules/@cucumber/gherkin-streams/node_modules/commander": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.1.0.tgz", + "integrity": "sha512-i0/MaqBtdbnJ4XQs4Pmyb+oFQl+q0lsAmokVUH92SlSw4fkeAcG3bVon+Qt7hmtF+u3Het6o4VgrcY3qAoEB6w==", + "dev": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/@cucumber/gherkin-utils": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@cucumber/gherkin-utils/-/gherkin-utils-8.0.0.tgz", + "integrity": "sha512-8uIZInEe3cO1cASmy3BA0PbVFUI+xWBnZAxmICbVOPsZaMB85MtESZLafzErgfRQPsHf6uYbVagP7MIjNPM5Jw==", + "dev": true, + "dependencies": { + "@cucumber/messages": "^19.0.0", + "@teppeis/multimaps": "2.0.0", + "commander": "9.3.0" + }, + "bin": { + "gherkin-utils": "bin/gherkin-utils" + } + }, + "node_modules/@cucumber/gherkin-utils/node_modules/@cucumber/messages": { + "version": "19.1.4", + "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-19.1.4.tgz", + "integrity": "sha512-Pksl0pnDz2l1+L5Ug85NlG6LWrrklN9qkMxN5Mv+1XZ3T6u580dnE6mVaxjJRdcOq4tR17Pc0RqIDZMyVY1FlA==", + "dev": true, + "dependencies": { + "@types/uuid": "8.3.4", + "class-transformer": "0.5.1", + "reflect-metadata": "0.1.13", + "uuid": "9.0.0" + } + }, + "node_modules/@cucumber/gherkin-utils/node_modules/commander": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.3.0.tgz", + "integrity": "sha512-hv95iU5uXPbK83mjrJKuZyFM/LBAoCV/XhVGkS5Je6tl7sxr6A0ITMw5WoRV46/UaJ46Nllm3Xt7IaJhXTIkzw==", + "dev": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/@cucumber/html-formatter": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@cucumber/html-formatter/-/html-formatter-20.0.0.tgz", + "integrity": "sha512-I6ZzUZ0CkaaPm6QHThoCRmdcuEIV9kJlNjaWvQ3PRkJm0OscQkQ0SXL/j73U30RDPiCAWwtq6ZSeQrgkTnSK+Q==", + "dev": true, + "peerDependencies": { + "@cucumber/messages": ">=18" + } + }, + "node_modules/@cucumber/message-streams": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@cucumber/message-streams/-/message-streams-4.0.1.tgz", + "integrity": "sha512-Kxap9uP5jD8tHUZVjTWgzxemi/0uOsbGjd4LBOSxcJoOCRbESFwemUzilJuzNTB8pcTQUh8D5oudUyxfkJOKmA==", + "dev": true, + "peerDependencies": { + "@cucumber/messages": ">=17.1.1" + } + }, + "node_modules/@cucumber/messages": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-21.0.1.tgz", + "integrity": "sha512-pGR7iURM4SF9Qp1IIpNiVQ77J9kfxMkPOEbyy+zRmGABnWWCsqMpJdfHeh9Mb3VskemVw85++e15JT0PYdcR3g==", + "dev": true, + "dependencies": { + "@types/uuid": "8.3.4", + "class-transformer": "0.5.1", + "reflect-metadata": "0.1.13", + "uuid": "9.0.0" + } + }, + "node_modules/@cucumber/tag-expressions": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@cucumber/tag-expressions/-/tag-expressions-4.1.0.tgz", + "integrity": "sha512-chTnjxV3vryL75N90wJIMdMafXmZoO2JgNJLYpsfcALL2/IQrRiny3vM9DgD5RDCSt1LNloMtb7rGey9YWxCsA==", + "dev": true + }, "node_modules/@eslint/eslintrc": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", @@ -3227,6 +3523,15 @@ "node": ">=10" } }, + "node_modules/@teppeis/multimaps": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@teppeis/multimaps/-/multimaps-2.0.0.tgz", + "integrity": "sha512-TL1adzq1HdxUf9WYduLcQ/DNGYiz71U31QRgbnr0Ef1cPyOUOsBojxHVWpFeOSUucB6Lrs0LxFRA14ntgtkc9w==", + "dev": true, + "engines": { + "node": ">=10.17" + } + }, "node_modules/@testim/chrome-version": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@testim/chrome-version/-/chrome-version-1.1.3.tgz", @@ -3330,6 +3635,12 @@ "@types/through": "*" } }, + "node_modules/@types/is-glob": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/is-glob/-/is-glob-4.0.2.tgz", + "integrity": "sha512-4j5G9Y5jljDSICQ1R2f/Rcyoj6DZmYGneny+p/cDkjep0rkqNg0W73Ty0bVjMUTZgLXHf8oiMjg1XC3CDwCz+g==", + "dev": true + }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", @@ -3411,6 +3722,12 @@ "@types/lodash": "*" } }, + "node_modules/@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==", + "dev": true + }, "node_modules/@types/minimist": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", @@ -3423,6 +3740,12 @@ "integrity": "sha512-rADY+HtTOA52l9VZWtgQfn4p+UDVM2eDVkMZT1I6syp0YKxW2F9v+0pbRZLsvskhQv/vMb6ZfCay81GHbz5SHg==", "dev": true }, + "node_modules/@types/mockery": { + "version": "1.4.30", + "resolved": "https://registry.npmjs.org/@types/mockery/-/mockery-1.4.30.tgz", + "integrity": "sha512-uv53RrNdhbkV/3VmVCtfImfYCWC3GTTRn3R11Whni3EJ+gb178tkZBVNj2edLY5CMrB749dQi+SJkg87jsN8UQ==", + "dev": true + }, "node_modules/@types/node": { "version": "18.11.9", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", @@ -3559,6 +3882,12 @@ "integrity": "sha512-N1rW+njavs70y2cApeIw1vLMYXRwfBy+7trgavGuuTfOd7j1Yh7QTRc/yqsPl6ncokt72ZXuxEU0PiCp9bSwNQ==", "dev": true }, + "node_modules/@types/uuid": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", + "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", + "dev": true + }, "node_modules/@types/which": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/which/-/which-1.3.2.tgz", @@ -8279,9 +8608,9 @@ } }, "node_modules/@wdio/cli": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-7.26.0.tgz", - "integrity": "sha512-xG+ZIzPqzz/Tvhfrogd8oNvTXzzdE+cbkmTHjMGo1hnmnoAQPeAEcV/QqaX5CHFE9DjaguEeadqjcZikB5U2GQ==", + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-7.29.1.tgz", + "integrity": "sha512-dldHNYlnuFUG10TlENbeL41tujqgYD7S/9nzV1J/szBryCO6AIVz/QWn/AUv3zrsO2sn8TNF8BMEXRvLgCxyeg==", "dev": true, "dependencies": { "@types/ejs": "^3.0.5", @@ -8294,7 +8623,7 @@ "@types/recursive-readdir": "^2.2.0", "@wdio/config": "7.26.0", "@wdio/logger": "7.26.0", - "@wdio/protocols": "7.22.0", + "@wdio/protocols": "7.27.0", "@wdio/types": "7.26.0", "@wdio/utils": "7.26.0", "async-exit-hook": "^2.0.1", @@ -8309,7 +8638,7 @@ "lodash.union": "^4.6.0", "mkdirp": "^1.0.4", "recursive-readdir": "^2.2.2", - "webdriverio": "7.26.0", + "webdriverio": "7.29.1", "yargs": "^17.0.0", "yarn-install": "^1.0.0" }, @@ -8336,16 +8665,46 @@ "node": ">=12.0.0" } }, + "node_modules/@wdio/cucumber-framework": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@wdio/cucumber-framework/-/cucumber-framework-7.29.0.tgz", + "integrity": "sha512-6+3HTeDdFiekwEu+cgRQm6kCz9NBCE2tNY6THtMtl7oNWhhWfDcYYGd8DR2V5Jvb9Y9Pa1qfQ09VJyKiHxzqUA==", + "dev": true, + "dependencies": { + "@cucumber/cucumber": "8.6.0", + "@cucumber/gherkin": "26.0.2", + "@cucumber/gherkin-streams": "^5.0.0", + "@cucumber/messages": "21.0.1", + "@types/is-glob": "^4.0.1", + "@types/long": "^4.0.1", + "@types/mockery": "^1.4.29", + "@types/sinonjs__fake-timers": "^8.1.2", + "@wdio/logger": "7.26.0", + "@wdio/types": "7.26.0", + "@wdio/utils": "7.26.0", + "expect-webdriverio": "^3.0.0", + "glob": "^8.0.3", + "is-glob": "^4.0.0", + "long": "^4.0.0", + "mockery": "^2.1.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@wdio/cli": "^7.0.0" + } + }, "node_modules/@wdio/local-runner": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-7.26.0.tgz", - "integrity": "sha512-GdCP7Y8s8qvoctC0WaSGBSmTSbVw74WEJm6Y3n3DpoCI8ABFNkQlhFlqJH+taQDs3sRVEM65bHGcU4C4FOVWXQ==", + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-7.29.1.tgz", + "integrity": "sha512-4w9Dsp9/4+MEU8yG7M8ynsCqpSP6UbKqZ2M/gWpvkvy57rb3eS9evFdIFfRzuQmbsztG9qeAlGILwlZ4/oaopg==", "dev": true, "dependencies": { "@types/stream-buffers": "^3.0.3", "@wdio/logger": "7.26.0", "@wdio/repl": "7.26.0", - "@wdio/runner": "7.26.0", + "@wdio/runner": "7.29.1", "@wdio/types": "7.26.0", "async-exit-hook": "^2.0.1", "split2": "^4.0.0", @@ -8391,9 +8750,9 @@ } }, "node_modules/@wdio/protocols": { - "version": "7.22.0", - "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-7.22.0.tgz", - "integrity": "sha512-8EXRR+Ymdwousm/VGtW3H1hwxZ/1g1H99A1lF0U4GuJ5cFWHCd0IVE5H31Z52i8ZruouW8jueMkGZPSo2IIUSQ==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-7.27.0.tgz", + "integrity": "sha512-hT/U22R5i3HhwPjkaKAG0yd59eaOaZB0eibRj2+esCImkb5Y6rg8FirrlYRxIGFVBl0+xZV0jKHzR5+o097nvg==", "dev": true, "engines": { "node": ">=12.0.0" @@ -8433,9 +8792,9 @@ } }, "node_modules/@wdio/runner": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-7.26.0.tgz", - "integrity": "sha512-DhQiOs10oPeLlv7/R+997arPg5OY7iEgespGkn6r+kdx2o+awxa6PFegQrjJmRKUmNv3TTuKXHouP34TbR/8sw==", + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-7.29.1.tgz", + "integrity": "sha512-lJEk/HJ5IiuvAJws8zTx9XL5LJuoexvjWIZmOmFJ6Gv8qRpUx6b0n+JM7vhhbTeIqs4QLXOwTQUHlDDRldQlzQ==", "dev": true, "dependencies": { "@wdio/config": "7.26.0", @@ -8444,8 +8803,8 @@ "@wdio/utils": "7.26.0", "deepmerge": "^4.0.0", "gaze": "^1.1.2", - "webdriver": "7.26.0", - "webdriverio": "7.26.0" + "webdriver": "7.27.0", + "webdriverio": "7.29.1" }, "engines": { "node": ">=12.0.0" @@ -8687,6 +9046,12 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, "node_modules/anymatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", @@ -8858,6 +9223,26 @@ "node": ">=0.8" } }, + "node_modules/assertion-error-formatter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/assertion-error-formatter/-/assertion-error-formatter-3.0.0.tgz", + "integrity": "sha512-6YyAVLrEze0kQ7CmJfUgrLHb+Y7XghmL2Ie7ijVa2Y9ynP3LV+VDiwFk62Dn0qtqbmY0BT0ss6p1xxpiF2PYbQ==", + "dev": true, + "dependencies": { + "diff": "^4.0.1", + "pad-right": "^0.2.2", + "repeat-string": "^1.6.1" + } + }, + "node_modules/assertion-error-formatter/node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -9702,6 +10087,17 @@ } ] }, + "node_modules/capital-case": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", + "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -9870,6 +10266,12 @@ "node": ">=8" } }, + "node_modules/class-transformer": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz", + "integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==", + "dev": true + }, "node_modules/clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", @@ -9903,6 +10305,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/cli-table3": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.2.tgz", + "integrity": "sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, "node_modules/cli-truncate": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", @@ -10834,6 +11251,20 @@ "integrity": "sha512-FUV3xaJ63buRLgHrLQVlVgQnQdR4yqdLGaDu7g8CQcWjInDfM9plBTPI9FRfpahju1UBSaMckeb2/46ApS/V1Q==", "dev": true }, + "node_modules/cucumber": { + "resolved": "examples/cucumber", + "link": true + }, + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, "node_modules/dargs": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", @@ -11112,16 +11543,16 @@ "dev": true }, "node_modules/devtools": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/devtools/-/devtools-7.26.0.tgz", - "integrity": "sha512-+8HNbNpzgo4Sn+WcrvXuwsHW9XPJfLo4bs9lgs6DPJHIIDXYJXQGsd7940wMX0Rp0D2vHXA4ibK0oTI5rogM3Q==", + "version": "7.28.1", + "resolved": "https://registry.npmjs.org/devtools/-/devtools-7.28.1.tgz", + "integrity": "sha512-sDoszzrXDMLiBQqsg9A5gDqDBwhH4sjYzJIW15lQinB8qgNs0y4o1zdfNlqiKs4HstCA2uFixQeibbDCyMa7hQ==", "dev": true, "dependencies": { "@types/node": "^18.0.0", "@types/ua-parser-js": "^0.7.33", "@wdio/config": "7.26.0", "@wdio/logger": "7.26.0", - "@wdio/protocols": "7.22.0", + "@wdio/protocols": "7.27.0", "@wdio/types": "7.26.0", "@wdio/utils": "7.26.0", "chrome-launcher": "^0.15.0", @@ -11136,9 +11567,9 @@ } }, "node_modules/devtools-protocol": { - "version": "0.0.1069585", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1069585.tgz", - "integrity": "sha512-sHmkZB6immWQWU4Wx3ogXwxjQUvQc92MmUDL52+q1z2hQmvpOcvDmbsjwX7QZOPTA32dMV7fgT6zUytcpPzy4A==", + "version": "0.0.1085790", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1085790.tgz", + "integrity": "sha512-f5kfwdOTxPqX5v8ZfAAl9xBgoEVazBYtIONDWIRqYbb7yjOIcnk6vpzCgBCQvav5AuBRLzyUGG0V74OAx93LoA==", "dev": true }, "node_modules/diff": { @@ -11286,6 +11717,25 @@ "node": ">=4" } }, + "node_modules/duration": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/duration/-/duration-0.2.2.tgz", + "integrity": "sha512-06kgtea+bGreF5eKYgI/36A6pLXggY7oR4p1pq4SmdFBn1ReOL5D8RhG64VrqfTTKNucqqtBAwEj8aB88mcqrg==", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "~0.10.46" + } + }, + "node_modules/durations": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/durations/-/durations-3.4.2.tgz", + "integrity": "sha512-V/lf7y33dGaypZZetVI1eu7BmvkbC4dItq12OElLRpKuaU5JxQstV2zHwLv8P7cNbQ+KL1WD80zMCTx5dNC4dg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -11473,12 +11923,48 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es5-ext": { + "version": "0.10.62", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, "node_modules/es6-promise": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", "dev": true }, + "node_modules/es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "dependencies": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -11919,6 +12405,21 @@ "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", "dev": true }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dev": true, + "dependencies": { + "type": "^2.7.2" + } + }, + "node_modules/ext/node_modules/type": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", + "dev": true + }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -13587,6 +14088,46 @@ "node": ">=0.10.0" } }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dev": true, + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-installed-globally/node_modules/global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "dev": true, + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-installed-globally/node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/is-interactive": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", @@ -14236,6 +14777,15 @@ "node": ">=0.10.0" } }, + "node_modules/knuth-shuffle-seeded": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/knuth-shuffle-seeded/-/knuth-shuffle-seeded-1.0.6.tgz", + "integrity": "sha512-9pFH0SplrfyKyojCLxZfMcvkhf5hH0d+UwR9nTVJ/DDQJGuzcXjTwB7TP7sDfehSudlGGaOLblmEWqv04ERVWg==", + "dev": true, + "dependencies": { + "seed-random": "~2.2.0" + } + }, "node_modules/ky": { "version": "0.30.0", "resolved": "https://registry.npmjs.org/ky/-/ky-0.30.0.tgz", @@ -14577,6 +15127,12 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "dev": true + }, "node_modules/lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", @@ -14685,6 +15241,12 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "node_modules/lodash.mergewith": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", + "dev": true + }, "node_modules/lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", @@ -14802,6 +15364,21 @@ "integrity": "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==", "dev": true }, + "node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "dev": true + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, "node_modules/lowercase-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", @@ -15269,6 +15846,12 @@ "node": ">=10" } }, + "node_modules/mockery": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mockery/-/mockery-2.1.0.tgz", + "integrity": "sha512-9VkOmxKlWXoDO/h1jDZaS4lH33aWfRiJiNT/tKj+8OGzrcFDLo8d0syGdbsc3Bc4GvRXPb+NMMvojotmuGJTvA==", + "dev": true + }, "node_modules/modify-values": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", @@ -15302,6 +15885,23 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoclone": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz", + "integrity": "sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==", + "dev": true + }, "node_modules/nanoid": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", @@ -15347,6 +15947,12 @@ "integrity": "sha512-+I10J3wKNoKddNxn0CNpoZ3eTZuqxjNM3b1GImVx22+ePI+Y15P8g/j3WsbP0fhzzrFzrtjOAoq5NCCucswXOQ==", "dev": true }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "dev": true + }, "node_modules/nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -15399,6 +16005,16 @@ "isarray": "0.0.1" } }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, "node_modules/node-cache": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/node-cache/-/node-cache-4.1.1.tgz", @@ -15960,6 +16576,18 @@ "node": ">=4" } }, + "node_modules/pad-right": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/pad-right/-/pad-right-0.2.2.tgz", + "integrity": "sha512-4cy8M95ioIGolCoMmm2cMntGR1lPLEbOMzOKu8bzjuJP6JpzEMQcDHmh7hHLYGgob+nKe1YHFMaG4V59HQa89g==", + "dev": true, + "dependencies": { + "repeat-string": "^1.5.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -16333,6 +16961,12 @@ "node": ">=0.4.0" } }, + "node_modules/property-expr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.5.tgz", + "integrity": "sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA==", + "dev": true + }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -16821,6 +17455,12 @@ "node": ">=4" } }, + "node_modules/reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "dev": true + }, "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", @@ -16854,12 +17494,30 @@ "@babel/runtime": "^7.8.4" } }, + "node_modules/regexp-match-indices": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regexp-match-indices/-/regexp-match-indices-1.0.2.tgz", + "integrity": "sha512-DwZuAkt8NF5mKwGGER1EGh2PRqyvhRhhLviH+R8y8dIuaQROlUfXjt4s9ZTXstIsSkptf06BSvwcEmmfheJJWQ==", + "dev": true, + "dependencies": { + "regexp-tree": "^0.1.11" + } + }, "node_modules/regexp-to-ast": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/regexp-to-ast/-/regexp-to-ast-0.5.0.tgz", "integrity": "sha512-tlbJqcMHnPKI9zSrystikWKwHkBqu2a/Sgw01h3zFjvYrMxEDYHzzoMZnUrbIfpTFEsoRnnviOXNCzFiSc54Qw==", "dev": true }, + "node_modules/regexp-tree": { + "version": "0.1.24", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.24.tgz", + "integrity": "sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw==", + "dev": true, + "bin": { + "regexp-tree": "bin/regexp-tree" + } + }, "node_modules/regexp.prototype.flags": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", @@ -16933,6 +17591,15 @@ "jsesc": "bin/jsesc" } }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, "node_modules/replace-in-file": { "version": "6.3.5", "resolved": "https://registry.npmjs.org/replace-in-file/-/replace-in-file-6.3.5.tgz", @@ -17191,6 +17858,18 @@ "node": ">=8" } }, + "node_modules/resolve-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg/-/resolve-pkg-2.0.0.tgz", + "integrity": "sha512-+1lzwXehGCXSeryaISr6WujZzowloigEofRB+dj75y9RRa/obVcYgbHJd53tdYw8pvZj8GojXaaENws8Ktw/hQ==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/responselike": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", @@ -17419,6 +18098,12 @@ "deprecated": "scmp v2 uses improved core crypto comparison since Node v6.6.0", "dev": true }, + "node_modules/seed-random": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/seed-random/-/seed-random-2.2.0.tgz", + "integrity": "sha512-34EQV6AAHQGhoc0tn/96a9Fsi6v2xdqe/dMUwljGRaFOzR3EgRmECvD0O8vi8X+/uQ50LGHfkNu/Eue5TPKZkQ==", + "dev": true + }, "node_modules/select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", @@ -17842,6 +18527,16 @@ "node": ">=0.10.0" } }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "node_modules/spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", @@ -17973,6 +18668,12 @@ "node": ">=0.10.0" } }, + "node_modules/stack-chain": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-2.0.0.tgz", + "integrity": "sha512-GGrHXePi305aW7XQweYZZwiRwR7Js3MWoK/EHzzB9ROdc75nCnjSJVi21rdAGxFl+yCx2L2qdfl5y7NO4lTyqg==", + "dev": true + }, "node_modules/stack-utils": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", @@ -18501,6 +19202,27 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -18572,6 +19294,12 @@ "node": ">=0.6" } }, + "node_modules/toposort": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", + "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==", + "dev": true + }, "node_modules/tough-cookie": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", @@ -18743,6 +19471,12 @@ "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", "dev": true }, + "node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -19024,6 +19758,15 @@ "browserslist": ">= 4.21.0" } }, + "node_modules/upper-case-first": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", + "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -19048,6 +19791,12 @@ "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==", "dev": true }, + "node_modules/util-arity": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/util-arity/-/util-arity-1.1.0.tgz", + "integrity": "sha512-kkyIsXKwemfSy8ZEoaIz06ApApnWsk5hQO0vLjZS6UkBiGiW++Jsyb8vSBoc0WKlffGoGs5yYy/j5pp8zckrFA==", + "dev": true + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -19253,15 +20002,15 @@ "link": true }, "node_modules/webdriver": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-7.26.0.tgz", - "integrity": "sha512-T21T31wq29D/rmpFHcAahhdrvfsfXsLs/LBe2su7wL725ptOEoSssuDXjXMkwjf9MSUIXnTcUIz8oJGbKRUMwQ==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-7.27.0.tgz", + "integrity": "sha512-870uIBnrGJ86g3DdYjM+PHhqdWf6NxysSme1KIs6irWxK+LqcaWKWhN75PldE+04xJB2mVWt1tKn0NBBFTWeMg==", "dev": true, "dependencies": { "@types/node": "^18.0.0", "@wdio/config": "7.26.0", "@wdio/logger": "7.26.0", - "@wdio/protocols": "7.22.0", + "@wdio/protocols": "7.27.0", "@wdio/types": "7.26.0", "@wdio/utils": "7.26.0", "got": "^11.0.2", @@ -19273,16 +20022,16 @@ } }, "node_modules/webdriverio": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-7.26.0.tgz", - "integrity": "sha512-7m9TeP871aYxZYKBI4GDh5aQZLN9Fd/PASu5K/jEIT65J4OBB6g5ZaycGFOmfNHCfjWKjwPXZuKiN1f2mcrcRg==", + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-7.29.1.tgz", + "integrity": "sha512-2xhoaZvV0tzOgnj8H/B4Yol8LTcIrWdfTdfe01d+ERtdzKCoqimmPNP4vpr2lVRVKL/TW4rfoBTBNvDUaJHe2g==", "dev": true, "dependencies": { "@types/aria-query": "^5.0.0", "@types/node": "^18.0.0", "@wdio/config": "7.26.0", "@wdio/logger": "7.26.0", - "@wdio/protocols": "7.22.0", + "@wdio/protocols": "7.27.0", "@wdio/repl": "7.26.0", "@wdio/types": "7.26.0", "@wdio/utils": "7.26.0", @@ -19290,8 +20039,8 @@ "aria-query": "^5.0.0", "css-shorthand-properties": "^1.1.1", "css-value": "^0.0.1", - "devtools": "7.26.0", - "devtools-protocol": "^0.0.1069585", + "devtools": "7.28.1", + "devtools-protocol": "^0.0.1085790", "fs-extra": "^10.0.0", "grapheme-splitter": "^1.0.2", "lodash.clonedeep": "^4.5.0", @@ -19304,7 +20053,7 @@ "resq": "^1.9.1", "rgb2hex": "0.2.5", "serialize-error": "^8.0.0", - "webdriver": "7.26.0" + "webdriver": "7.27.0" }, "engines": { "node": ">=12.0.0" @@ -19766,6 +20515,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/yup": { + "version": "0.32.11", + "resolved": "https://registry.npmjs.org/yup/-/yup-0.32.11.tgz", + "integrity": "sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.15.4", + "@types/lodash": "^4.14.175", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "nanoclone": "^0.2.1", + "property-expr": "^2.0.4", + "toposort": "^2.0.2" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/zip-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", @@ -21098,6 +21865,13 @@ "integrity": "sha512-llLJZ8OAlZrjGlBvamm6Zdo/HmGAcCLq5gx7cSwUX8No+n/8ip+oaC4x33IdZIif8+Rh5dQUIZXmfbSghiOmNQ==", "dev": true }, + "@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "optional": true + }, "@commitlint/cli": { "version": "17.2.0", "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-17.2.0.tgz", @@ -21312,6 +22086,234 @@ "@jridgewell/trace-mapping": "0.3.9" } }, + "@cucumber/ci-environment": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@cucumber/ci-environment/-/ci-environment-9.1.0.tgz", + "integrity": "sha512-jdnF6APXP3GawMue8kdMxhu6TBhyRUO4KDRxTowf06NtclLjIw2Ybpo9IcIOMvE8kHukvJyM00uxWX+CfS7JgQ==", + "dev": true + }, + "@cucumber/cucumber": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@cucumber/cucumber/-/cucumber-8.6.0.tgz", + "integrity": "sha512-htkP/MlaYmgDId1Z2+7OQnH9aBd4Ui/Lk6PEmvMvP52ixPSUOv0MrP4/HUSECVXY0TI8GG7Ho03uLf6lieiFvw==", + "dev": true, + "requires": { + "@cspotcode/source-map-support": "^0.8.0", + "@cucumber/ci-environment": "9.1.0", + "@cucumber/cucumber-expressions": "16.0.0", + "@cucumber/gherkin": "24.0.0", + "@cucumber/gherkin-streams": "5.0.1", + "@cucumber/gherkin-utils": "8.0.0", + "@cucumber/html-formatter": "20.0.0", + "@cucumber/message-streams": "4.0.1", + "@cucumber/messages": "19.1.2", + "@cucumber/tag-expressions": "4.1.0", + "assertion-error-formatter": "^3.0.0", + "capital-case": "^1.0.4", + "chalk": "^4.1.2", + "cli-table3": "0.6.2", + "commander": "^9.0.0", + "debug": "^4.3.4", + "duration": "^0.2.2", + "durations": "^3.4.2", + "figures": "^3.2.0", + "glob": "^7.1.6", + "has-ansi": "^4.0.1", + "indent-string": "^4.0.0", + "is-installed-globally": "^0.4.0", + "is-stream": "^2.0.0", + "knuth-shuffle-seeded": "^1.0.6", + "lodash.merge": "^4.6.2", + "lodash.mergewith": "^4.6.2", + "mz": "^2.7.0", + "progress": "^2.0.3", + "resolve-pkg": "^2.0.0", + "semver": "7.3.7", + "stack-chain": "^2.0.0", + "string-argv": "^0.3.1", + "strip-ansi": "6.0.1", + "supports-color": "^8.1.1", + "tmp": "^0.2.1", + "util-arity": "^1.1.0", + "verror": "^1.10.0", + "yup": "^0.32.11" + }, + "dependencies": { + "@cucumber/gherkin": { + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/@cucumber/gherkin/-/gherkin-24.0.0.tgz", + "integrity": "sha512-b7OsnvX1B8myDAKMc+RAiUX9bzgtNdjGsiMj10O13xu2HBWIOQ19EqBJ4xLO5CFG/lGk1J/+L0lANQVowxLVBg==", + "dev": true, + "requires": { + "@cucumber/messages": "^19.0.0" + } + }, + "@cucumber/messages": { + "version": "19.1.2", + "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-19.1.2.tgz", + "integrity": "sha512-vhWkNmQco+7tk/DWqpN0/R9KTNvsKsXVfZ7IsJs+dEeWmTuRztklHq8lJalwMSQBl71+2/KqGHzOO4BMTC9wIQ==", + "dev": true, + "requires": { + "@types/uuid": "8.3.4", + "class-transformer": "0.5.1", + "reflect-metadata": "0.1.13", + "uuid": "8.3.2" + } + }, + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-ansi": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-4.0.1.tgz", + "integrity": "sha512-Qr4RtTm30xvEdqUXbSBVWDu+PrTokJOwe/FU+VdfJPk+MXAPoeOzKpRyrDTnZIJwAkQ4oBLTU53nu0HrkF/Z2A==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + } + } + }, + "@cucumber/cucumber-expressions": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@cucumber/cucumber-expressions/-/cucumber-expressions-16.0.0.tgz", + "integrity": "sha512-HTh+Pg7oQ5aLuCkSbD2Q6jBaE40M3R/XaLEz+UqD5d9dZRu6P38W4LTooV5bV6dZgBunlMLK8+6ug2ziYvRddw==", + "dev": true, + "requires": { + "regexp-match-indices": "1.0.2" + } + }, + "@cucumber/gherkin": { + "version": "26.0.2", + "resolved": "https://registry.npmjs.org/@cucumber/gherkin/-/gherkin-26.0.2.tgz", + "integrity": "sha512-t5eSslBHwHIfzuEjATqIJaCOTIlj/bqw8N4W6HIpDS6dgcZZYBBhLzjDWZP8CAkDF/CmoSwQ3jRsC1eyLbnKog==", + "dev": true, + "requires": { + "@cucumber/messages": "^21.0.0" + } + }, + "@cucumber/gherkin-streams": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@cucumber/gherkin-streams/-/gherkin-streams-5.0.1.tgz", + "integrity": "sha512-/7VkIE/ASxIP/jd4Crlp4JHXqdNFxPGQokqWqsaCCiqBiu5qHoKMxcWNlp9njVL/n9yN4S08OmY3ZR8uC5x74Q==", + "dev": true, + "requires": { + "commander": "9.1.0", + "source-map-support": "0.5.21" + }, + "dependencies": { + "commander": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.1.0.tgz", + "integrity": "sha512-i0/MaqBtdbnJ4XQs4Pmyb+oFQl+q0lsAmokVUH92SlSw4fkeAcG3bVon+Qt7hmtF+u3Het6o4VgrcY3qAoEB6w==", + "dev": true + } + } + }, + "@cucumber/gherkin-utils": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@cucumber/gherkin-utils/-/gherkin-utils-8.0.0.tgz", + "integrity": "sha512-8uIZInEe3cO1cASmy3BA0PbVFUI+xWBnZAxmICbVOPsZaMB85MtESZLafzErgfRQPsHf6uYbVagP7MIjNPM5Jw==", + "dev": true, + "requires": { + "@cucumber/messages": "^19.0.0", + "@teppeis/multimaps": "2.0.0", + "commander": "9.3.0" + }, + "dependencies": { + "@cucumber/messages": { + "version": "19.1.4", + "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-19.1.4.tgz", + "integrity": "sha512-Pksl0pnDz2l1+L5Ug85NlG6LWrrklN9qkMxN5Mv+1XZ3T6u580dnE6mVaxjJRdcOq4tR17Pc0RqIDZMyVY1FlA==", + "dev": true, + "requires": { + "@types/uuid": "8.3.4", + "class-transformer": "0.5.1", + "reflect-metadata": "0.1.13", + "uuid": "9.0.0" + } + }, + "commander": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.3.0.tgz", + "integrity": "sha512-hv95iU5uXPbK83mjrJKuZyFM/LBAoCV/XhVGkS5Je6tl7sxr6A0ITMw5WoRV46/UaJ46Nllm3Xt7IaJhXTIkzw==", + "dev": true + } + } + }, + "@cucumber/html-formatter": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@cucumber/html-formatter/-/html-formatter-20.0.0.tgz", + "integrity": "sha512-I6ZzUZ0CkaaPm6QHThoCRmdcuEIV9kJlNjaWvQ3PRkJm0OscQkQ0SXL/j73U30RDPiCAWwtq6ZSeQrgkTnSK+Q==", + "dev": true, + "requires": {} + }, + "@cucumber/message-streams": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@cucumber/message-streams/-/message-streams-4.0.1.tgz", + "integrity": "sha512-Kxap9uP5jD8tHUZVjTWgzxemi/0uOsbGjd4LBOSxcJoOCRbESFwemUzilJuzNTB8pcTQUh8D5oudUyxfkJOKmA==", + "dev": true, + "requires": {} + }, + "@cucumber/messages": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-21.0.1.tgz", + "integrity": "sha512-pGR7iURM4SF9Qp1IIpNiVQ77J9kfxMkPOEbyy+zRmGABnWWCsqMpJdfHeh9Mb3VskemVw85++e15JT0PYdcR3g==", + "dev": true, + "requires": { + "@types/uuid": "8.3.4", + "class-transformer": "0.5.1", + "reflect-metadata": "0.1.13", + "uuid": "9.0.0" + } + }, + "@cucumber/tag-expressions": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@cucumber/tag-expressions/-/tag-expressions-4.1.0.tgz", + "integrity": "sha512-chTnjxV3vryL75N90wJIMdMafXmZoO2JgNJLYpsfcALL2/IQrRiny3vM9DgD5RDCSt1LNloMtb7rGey9YWxCsA==", + "dev": true + }, "@eslint/eslintrc": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", @@ -22205,6 +23207,12 @@ "defer-to-connect": "^2.0.0" } }, + "@teppeis/multimaps": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@teppeis/multimaps/-/multimaps-2.0.0.tgz", + "integrity": "sha512-TL1adzq1HdxUf9WYduLcQ/DNGYiz71U31QRgbnr0Ef1cPyOUOsBojxHVWpFeOSUucB6Lrs0LxFRA14ntgtkc9w==", + "dev": true + }, "@testim/chrome-version": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@testim/chrome-version/-/chrome-version-1.1.3.tgz", @@ -22304,6 +23312,12 @@ "@types/through": "*" } }, + "@types/is-glob": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/is-glob/-/is-glob-4.0.2.tgz", + "integrity": "sha512-4j5G9Y5jljDSICQ1R2f/Rcyoj6DZmYGneny+p/cDkjep0rkqNg0W73Ty0bVjMUTZgLXHf8oiMjg1XC3CDwCz+g==", + "dev": true + }, "@types/istanbul-lib-coverage": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", @@ -22385,6 +23399,12 @@ "@types/lodash": "*" } }, + "@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==", + "dev": true + }, "@types/minimist": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", @@ -22397,6 +23417,12 @@ "integrity": "sha512-rADY+HtTOA52l9VZWtgQfn4p+UDVM2eDVkMZT1I6syp0YKxW2F9v+0pbRZLsvskhQv/vMb6ZfCay81GHbz5SHg==", "dev": true }, + "@types/mockery": { + "version": "1.4.30", + "resolved": "https://registry.npmjs.org/@types/mockery/-/mockery-1.4.30.tgz", + "integrity": "sha512-uv53RrNdhbkV/3VmVCtfImfYCWC3GTTRn3R11Whni3EJ+gb178tkZBVNj2edLY5CMrB749dQi+SJkg87jsN8UQ==", + "dev": true + }, "@types/node": { "version": "18.11.9", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", @@ -22533,6 +23559,12 @@ "integrity": "sha512-N1rW+njavs70y2cApeIw1vLMYXRwfBy+7trgavGuuTfOd7j1Yh7QTRc/yqsPl6ncokt72ZXuxEU0PiCp9bSwNQ==", "dev": true }, + "@types/uuid": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", + "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", + "dev": true + }, "@types/which": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/which/-/which-1.3.2.tgz", @@ -27247,9 +28279,9 @@ } }, "@wdio/cli": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-7.26.0.tgz", - "integrity": "sha512-xG+ZIzPqzz/Tvhfrogd8oNvTXzzdE+cbkmTHjMGo1hnmnoAQPeAEcV/QqaX5CHFE9DjaguEeadqjcZikB5U2GQ==", + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-7.29.1.tgz", + "integrity": "sha512-dldHNYlnuFUG10TlENbeL41tujqgYD7S/9nzV1J/szBryCO6AIVz/QWn/AUv3zrsO2sn8TNF8BMEXRvLgCxyeg==", "dev": true, "requires": { "@types/ejs": "^3.0.5", @@ -27262,7 +28294,7 @@ "@types/recursive-readdir": "^2.2.0", "@wdio/config": "7.26.0", "@wdio/logger": "7.26.0", - "@wdio/protocols": "7.22.0", + "@wdio/protocols": "7.27.0", "@wdio/types": "7.26.0", "@wdio/utils": "7.26.0", "async-exit-hook": "^2.0.1", @@ -27277,7 +28309,7 @@ "lodash.union": "^4.6.0", "mkdirp": "^1.0.4", "recursive-readdir": "^2.2.2", - "webdriverio": "7.26.0", + "webdriverio": "7.29.1", "yargs": "^17.0.0", "yarn-install": "^1.0.0" } @@ -27295,16 +28327,40 @@ "glob": "^8.0.3" } }, + "@wdio/cucumber-framework": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@wdio/cucumber-framework/-/cucumber-framework-7.29.0.tgz", + "integrity": "sha512-6+3HTeDdFiekwEu+cgRQm6kCz9NBCE2tNY6THtMtl7oNWhhWfDcYYGd8DR2V5Jvb9Y9Pa1qfQ09VJyKiHxzqUA==", + "dev": true, + "requires": { + "@cucumber/cucumber": "8.6.0", + "@cucumber/gherkin": "26.0.2", + "@cucumber/gherkin-streams": "^5.0.0", + "@cucumber/messages": "21.0.1", + "@types/is-glob": "^4.0.1", + "@types/long": "^4.0.1", + "@types/mockery": "^1.4.29", + "@types/sinonjs__fake-timers": "^8.1.2", + "@wdio/logger": "7.26.0", + "@wdio/types": "7.26.0", + "@wdio/utils": "7.26.0", + "expect-webdriverio": "^3.0.0", + "glob": "^8.0.3", + "is-glob": "^4.0.0", + "long": "^4.0.0", + "mockery": "^2.1.0" + } + }, "@wdio/local-runner": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-7.26.0.tgz", - "integrity": "sha512-GdCP7Y8s8qvoctC0WaSGBSmTSbVw74WEJm6Y3n3DpoCI8ABFNkQlhFlqJH+taQDs3sRVEM65bHGcU4C4FOVWXQ==", + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-7.29.1.tgz", + "integrity": "sha512-4w9Dsp9/4+MEU8yG7M8ynsCqpSP6UbKqZ2M/gWpvkvy57rb3eS9evFdIFfRzuQmbsztG9qeAlGILwlZ4/oaopg==", "dev": true, "requires": { "@types/stream-buffers": "^3.0.3", "@wdio/logger": "7.26.0", "@wdio/repl": "7.26.0", - "@wdio/runner": "7.26.0", + "@wdio/runner": "7.29.1", "@wdio/types": "7.26.0", "async-exit-hook": "^2.0.1", "split2": "^4.0.0", @@ -27338,9 +28394,9 @@ } }, "@wdio/protocols": { - "version": "7.22.0", - "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-7.22.0.tgz", - "integrity": "sha512-8EXRR+Ymdwousm/VGtW3H1hwxZ/1g1H99A1lF0U4GuJ5cFWHCd0IVE5H31Z52i8ZruouW8jueMkGZPSo2IIUSQ==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-7.27.0.tgz", + "integrity": "sha512-hT/U22R5i3HhwPjkaKAG0yd59eaOaZB0eibRj2+esCImkb5Y6rg8FirrlYRxIGFVBl0+xZV0jKHzR5+o097nvg==", "dev": true }, "@wdio/repl": { @@ -27371,9 +28427,9 @@ } }, "@wdio/runner": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-7.26.0.tgz", - "integrity": "sha512-DhQiOs10oPeLlv7/R+997arPg5OY7iEgespGkn6r+kdx2o+awxa6PFegQrjJmRKUmNv3TTuKXHouP34TbR/8sw==", + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-7.29.1.tgz", + "integrity": "sha512-lJEk/HJ5IiuvAJws8zTx9XL5LJuoexvjWIZmOmFJ6Gv8qRpUx6b0n+JM7vhhbTeIqs4QLXOwTQUHlDDRldQlzQ==", "dev": true, "requires": { "@wdio/config": "7.26.0", @@ -27382,8 +28438,8 @@ "@wdio/utils": "7.26.0", "deepmerge": "^4.0.0", "gaze": "^1.1.2", - "webdriver": "7.26.0", - "webdriverio": "7.26.0" + "webdriver": "7.27.0", + "webdriverio": "7.29.1" } }, "@wdio/selenium-standalone-service": { @@ -27547,6 +28603,12 @@ "color-convert": "^2.0.1" } }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, "anymatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", @@ -27695,6 +28757,25 @@ "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", "dev": true }, + "assertion-error-formatter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/assertion-error-formatter/-/assertion-error-formatter-3.0.0.tgz", + "integrity": "sha512-6YyAVLrEze0kQ7CmJfUgrLHb+Y7XghmL2Ie7ijVa2Y9ynP3LV+VDiwFk62Dn0qtqbmY0BT0ss6p1xxpiF2PYbQ==", + "dev": true, + "requires": { + "diff": "^4.0.1", + "pad-right": "^0.2.2", + "repeat-string": "^1.6.1" + }, + "dependencies": { + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + } + } + }, "astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -28326,6 +29407,17 @@ "integrity": "sha512-aOBHrLmTQw//WFa2rcF1If9fa3ypkC1wzqqiKHgfdrXTWcU8C4gKVZT77eQAPWN1APys3+uQ0Df07rKauXGEYA==", "dev": true }, + "capital-case": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", + "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -28453,6 +29545,12 @@ "integrity": "sha512-up5ggbaDqOqJ4UqLKZ2naVkyqSJQgJi5lwD6b6mM748ysrghDBX0bx/qJTUHzw7zu6Mq4gycviSF5hJnwceD8w==", "dev": true }, + "class-transformer": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz", + "integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==", + "dev": true + }, "clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", @@ -28474,6 +29572,16 @@ "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", "dev": true }, + "cli-table3": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.2.tgz", + "integrity": "sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw==", + "dev": true, + "requires": { + "@colors/colors": "1.5.0", + "string-width": "^4.2.0" + } + }, "cli-truncate": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", @@ -29210,6 +30318,29 @@ "integrity": "sha512-FUV3xaJ63buRLgHrLQVlVgQnQdR4yqdLGaDu7g8CQcWjInDfM9plBTPI9FRfpahju1UBSaMckeb2/46ApS/V1Q==", "dev": true }, + "cucumber": { + "version": "file:examples/cucumber", + "requires": { + "@wdio/cli": "^7.27.0", + "@wdio/cucumber-framework": "^7.27.0", + "@wdio/local-runner": "^7.27.0", + "@wdio/mocha-framework": "^7.26.0", + "@wdio/spec-reporter": "^7.26.0", + "chromedriver": "latest", + "wdio-chromedriver-service": "^7.3.2", + "wdio-ui5-service": "*" + } + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, "dargs": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", @@ -29410,16 +30541,16 @@ "dev": true }, "devtools": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/devtools/-/devtools-7.26.0.tgz", - "integrity": "sha512-+8HNbNpzgo4Sn+WcrvXuwsHW9XPJfLo4bs9lgs6DPJHIIDXYJXQGsd7940wMX0Rp0D2vHXA4ibK0oTI5rogM3Q==", + "version": "7.28.1", + "resolved": "https://registry.npmjs.org/devtools/-/devtools-7.28.1.tgz", + "integrity": "sha512-sDoszzrXDMLiBQqsg9A5gDqDBwhH4sjYzJIW15lQinB8qgNs0y4o1zdfNlqiKs4HstCA2uFixQeibbDCyMa7hQ==", "dev": true, "requires": { "@types/node": "^18.0.0", "@types/ua-parser-js": "^0.7.33", "@wdio/config": "7.26.0", "@wdio/logger": "7.26.0", - "@wdio/protocols": "7.22.0", + "@wdio/protocols": "7.27.0", "@wdio/types": "7.26.0", "@wdio/utils": "7.26.0", "chrome-launcher": "^0.15.0", @@ -29431,9 +30562,9 @@ } }, "devtools-protocol": { - "version": "0.0.1069585", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1069585.tgz", - "integrity": "sha512-sHmkZB6immWQWU4Wx3ogXwxjQUvQc92MmUDL52+q1z2hQmvpOcvDmbsjwX7QZOPTA32dMV7fgT6zUytcpPzy4A==", + "version": "0.0.1085790", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1085790.tgz", + "integrity": "sha512-f5kfwdOTxPqX5v8ZfAAl9xBgoEVazBYtIONDWIRqYbb7yjOIcnk6vpzCgBCQvav5AuBRLzyUGG0V74OAx93LoA==", "dev": true }, "diff": { @@ -29541,6 +30672,22 @@ } } }, + "duration": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/duration/-/duration-0.2.2.tgz", + "integrity": "sha512-06kgtea+bGreF5eKYgI/36A6pLXggY7oR4p1pq4SmdFBn1ReOL5D8RhG64VrqfTTKNucqqtBAwEj8aB88mcqrg==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.46" + } + }, + "durations": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/durations/-/durations-3.4.2.tgz", + "integrity": "sha512-V/lf7y33dGaypZZetVI1eu7BmvkbC4dItq12OElLRpKuaU5JxQstV2zHwLv8P7cNbQ+KL1WD80zMCTx5dNC4dg==", + "dev": true + }, "eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -29704,12 +30851,44 @@ "is-symbol": "^1.0.2" } }, + "es5-ext": { + "version": "0.10.62", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "dev": true, + "requires": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, "es6-promise": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", "dev": true }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -30051,6 +31230,23 @@ } } }, + "ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dev": true, + "requires": { + "type": "^2.7.2" + }, + "dependencies": { + "type": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", + "dev": true + } + } + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -31333,6 +32529,33 @@ "is-extglob": "^2.1.1" } }, + "is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dev": true, + "requires": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "dependencies": { + "global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "dev": true, + "requires": { + "ini": "2.0.0" + } + }, + "ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true + } + } + }, "is-interactive": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", @@ -31827,6 +33050,15 @@ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, + "knuth-shuffle-seeded": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/knuth-shuffle-seeded/-/knuth-shuffle-seeded-1.0.6.tgz", + "integrity": "sha512-9pFH0SplrfyKyojCLxZfMcvkhf5hH0d+UwR9nTVJ/DDQJGuzcXjTwB7TP7sDfehSudlGGaOLblmEWqv04ERVWg==", + "dev": true, + "requires": { + "seed-random": "~2.2.0" + } + }, "ky": { "version": "0.30.0", "resolved": "https://registry.npmjs.org/ky/-/ky-0.30.0.tgz", @@ -32069,6 +33301,12 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "dev": true + }, "lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", @@ -32177,6 +33415,12 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "lodash.mergewith": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", + "dev": true + }, "lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", @@ -32265,6 +33509,21 @@ "integrity": "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==", "dev": true }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "dev": true + }, + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, "lowercase-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", @@ -32627,6 +33886,12 @@ } } }, + "mockery": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mockery/-/mockery-2.1.0.tgz", + "integrity": "sha512-9VkOmxKlWXoDO/h1jDZaS4lH33aWfRiJiNT/tKj+8OGzrcFDLo8d0syGdbsc3Bc4GvRXPb+NMMvojotmuGJTvA==", + "dev": true + }, "modify-values": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", @@ -32651,6 +33916,23 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "nanoclone": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz", + "integrity": "sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==", + "dev": true + }, "nanoid": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", @@ -32687,6 +33969,12 @@ "integrity": "sha512-+I10J3wKNoKddNxn0CNpoZ3eTZuqxjNM3b1GImVx22+ePI+Y15P8g/j3WsbP0fhzzrFzrtjOAoq5NCCucswXOQ==", "dev": true }, + "next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "dev": true + }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -32743,6 +34031,16 @@ } } }, + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, "node-cache": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/node-cache/-/node-cache-4.1.1.tgz", @@ -33145,6 +34443,15 @@ "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", "dev": true }, + "pad-right": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/pad-right/-/pad-right-0.2.2.tgz", + "integrity": "sha512-4cy8M95ioIGolCoMmm2cMntGR1lPLEbOMzOKu8bzjuJP6JpzEMQcDHmh7hHLYGgob+nKe1YHFMaG4V59HQa89g==", + "dev": true, + "requires": { + "repeat-string": "^1.5.2" + } + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -33410,6 +34717,12 @@ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, + "property-expr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.5.tgz", + "integrity": "sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA==", + "dev": true + }, "proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -33800,6 +35113,12 @@ "redis-errors": "^1.0.0" } }, + "reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "dev": true + }, "regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", @@ -33830,12 +35149,27 @@ "@babel/runtime": "^7.8.4" } }, + "regexp-match-indices": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regexp-match-indices/-/regexp-match-indices-1.0.2.tgz", + "integrity": "sha512-DwZuAkt8NF5mKwGGER1EGh2PRqyvhRhhLviH+R8y8dIuaQROlUfXjt4s9ZTXstIsSkptf06BSvwcEmmfheJJWQ==", + "dev": true, + "requires": { + "regexp-tree": "^0.1.11" + } + }, "regexp-to-ast": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/regexp-to-ast/-/regexp-to-ast-0.5.0.tgz", "integrity": "sha512-tlbJqcMHnPKI9zSrystikWKwHkBqu2a/Sgw01h3zFjvYrMxEDYHzzoMZnUrbIfpTFEsoRnnviOXNCzFiSc54Qw==", "dev": true }, + "regexp-tree": { + "version": "0.1.24", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.24.tgz", + "integrity": "sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw==", + "dev": true + }, "regexp.prototype.flags": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", @@ -33890,6 +35224,12 @@ } } }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true + }, "replace-in-file": { "version": "6.3.5", "resolved": "https://registry.npmjs.org/replace-in-file/-/replace-in-file-6.3.5.tgz", @@ -34085,6 +35425,15 @@ "global-dirs": "^0.1.1" } }, + "resolve-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg/-/resolve-pkg-2.0.0.tgz", + "integrity": "sha512-+1lzwXehGCXSeryaISr6WujZzowloigEofRB+dj75y9RRa/obVcYgbHJd53tdYw8pvZj8GojXaaENws8Ktw/hQ==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, "responselike": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", @@ -34270,6 +35619,12 @@ "integrity": "sha512-gCzsBFLpXrXnq60hYFV4hc4b5a3nIWTKtFWMYvlcXqs5gHKTR445CO3QbFRZW/O+9tRIVTeC46/MXbq1Se/1Sw==", "dev": true }, + "seed-random": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/seed-random/-/seed-random-2.2.0.tgz", + "integrity": "sha512-34EQV6AAHQGhoc0tn/96a9Fsi6v2xdqe/dMUwljGRaFOzR3EgRmECvD0O8vi8X+/uQ50LGHfkNu/Eue5TPKZkQ==", + "dev": true + }, "select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", @@ -34614,6 +35969,16 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", @@ -34724,6 +36089,12 @@ "tweetnacl": "~0.14.0" } }, + "stack-chain": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-2.0.0.tgz", + "integrity": "sha512-GGrHXePi305aW7XQweYZZwiRwR7Js3MWoK/EHzzB9ROdc75nCnjSJVi21rdAGxFl+yCx2L2qdfl5y7NO4lTyqg==", + "dev": true + }, "stack-utils": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", @@ -35127,6 +36498,24 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, + "thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "requires": { + "any-promise": "^1.0.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "requires": { + "thenify": ">= 3.1.0 < 4" + } + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -35185,6 +36574,12 @@ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true }, + "toposort": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", + "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==", + "dev": true + }, "tough-cookie": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", @@ -35307,6 +36702,12 @@ "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", "dev": true }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -35529,6 +36930,15 @@ "picocolors": "^1.0.0" } }, + "upper-case-first": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", + "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -35552,6 +36962,12 @@ "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==", "dev": true }, + "util-arity": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/util-arity/-/util-arity-1.1.0.tgz", + "integrity": "sha512-kkyIsXKwemfSy8ZEoaIz06ApApnWsk5hQO0vLjZS6UkBiGiW++Jsyb8vSBoc0WKlffGoGs5yYy/j5pp8zckrFA==", + "dev": true + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -35728,6 +37144,7 @@ "@wdio/spec-reporter": "^7", "chromedriver": "latest", "cross-env": "^7.0.3", + "cucumber": "file:examples/cucumber", "deepmerge": "^4.2.2", "dotenv": "^16.0.3", "eslint": "^8.27.0", @@ -37058,6 +38475,13 @@ "integrity": "sha512-llLJZ8OAlZrjGlBvamm6Zdo/HmGAcCLq5gx7cSwUX8No+n/8ip+oaC4x33IdZIif8+Rh5dQUIZXmfbSghiOmNQ==", "dev": true }, + "@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "optional": true + }, "@commitlint/cli": { "version": "17.2.0", "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-17.2.0.tgz", @@ -37272,6 +38696,234 @@ "@jridgewell/trace-mapping": "0.3.9" } }, + "@cucumber/ci-environment": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@cucumber/ci-environment/-/ci-environment-9.1.0.tgz", + "integrity": "sha512-jdnF6APXP3GawMue8kdMxhu6TBhyRUO4KDRxTowf06NtclLjIw2Ybpo9IcIOMvE8kHukvJyM00uxWX+CfS7JgQ==", + "dev": true + }, + "@cucumber/cucumber": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@cucumber/cucumber/-/cucumber-8.6.0.tgz", + "integrity": "sha512-htkP/MlaYmgDId1Z2+7OQnH9aBd4Ui/Lk6PEmvMvP52ixPSUOv0MrP4/HUSECVXY0TI8GG7Ho03uLf6lieiFvw==", + "dev": true, + "requires": { + "@cspotcode/source-map-support": "^0.8.0", + "@cucumber/ci-environment": "9.1.0", + "@cucumber/cucumber-expressions": "16.0.0", + "@cucumber/gherkin": "24.0.0", + "@cucumber/gherkin-streams": "5.0.1", + "@cucumber/gherkin-utils": "8.0.0", + "@cucumber/html-formatter": "20.0.0", + "@cucumber/message-streams": "4.0.1", + "@cucumber/messages": "19.1.2", + "@cucumber/tag-expressions": "4.1.0", + "assertion-error-formatter": "^3.0.0", + "capital-case": "^1.0.4", + "chalk": "^4.1.2", + "cli-table3": "0.6.2", + "commander": "^9.0.0", + "debug": "^4.3.4", + "duration": "^0.2.2", + "durations": "^3.4.2", + "figures": "^3.2.0", + "glob": "^7.1.6", + "has-ansi": "^4.0.1", + "indent-string": "^4.0.0", + "is-installed-globally": "^0.4.0", + "is-stream": "^2.0.0", + "knuth-shuffle-seeded": "^1.0.6", + "lodash.merge": "^4.6.2", + "lodash.mergewith": "^4.6.2", + "mz": "^2.7.0", + "progress": "^2.0.3", + "resolve-pkg": "^2.0.0", + "semver": "7.3.7", + "stack-chain": "^2.0.0", + "string-argv": "^0.3.1", + "strip-ansi": "6.0.1", + "supports-color": "^8.1.1", + "tmp": "^0.2.1", + "util-arity": "^1.1.0", + "verror": "^1.10.0", + "yup": "^0.32.11" + }, + "dependencies": { + "@cucumber/gherkin": { + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/@cucumber/gherkin/-/gherkin-24.0.0.tgz", + "integrity": "sha512-b7OsnvX1B8myDAKMc+RAiUX9bzgtNdjGsiMj10O13xu2HBWIOQ19EqBJ4xLO5CFG/lGk1J/+L0lANQVowxLVBg==", + "dev": true, + "requires": { + "@cucumber/messages": "^19.0.0" + } + }, + "@cucumber/messages": { + "version": "19.1.2", + "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-19.1.2.tgz", + "integrity": "sha512-vhWkNmQco+7tk/DWqpN0/R9KTNvsKsXVfZ7IsJs+dEeWmTuRztklHq8lJalwMSQBl71+2/KqGHzOO4BMTC9wIQ==", + "dev": true, + "requires": { + "@types/uuid": "8.3.4", + "class-transformer": "0.5.1", + "reflect-metadata": "0.1.13", + "uuid": "8.3.2" + } + }, + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-ansi": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-4.0.1.tgz", + "integrity": "sha512-Qr4RtTm30xvEdqUXbSBVWDu+PrTokJOwe/FU+VdfJPk+MXAPoeOzKpRyrDTnZIJwAkQ4oBLTU53nu0HrkF/Z2A==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + } + } + }, + "@cucumber/cucumber-expressions": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@cucumber/cucumber-expressions/-/cucumber-expressions-16.0.0.tgz", + "integrity": "sha512-HTh+Pg7oQ5aLuCkSbD2Q6jBaE40M3R/XaLEz+UqD5d9dZRu6P38W4LTooV5bV6dZgBunlMLK8+6ug2ziYvRddw==", + "dev": true, + "requires": { + "regexp-match-indices": "1.0.2" + } + }, + "@cucumber/gherkin": { + "version": "26.0.2", + "resolved": "https://registry.npmjs.org/@cucumber/gherkin/-/gherkin-26.0.2.tgz", + "integrity": "sha512-t5eSslBHwHIfzuEjATqIJaCOTIlj/bqw8N4W6HIpDS6dgcZZYBBhLzjDWZP8CAkDF/CmoSwQ3jRsC1eyLbnKog==", + "dev": true, + "requires": { + "@cucumber/messages": "^21.0.0" + } + }, + "@cucumber/gherkin-streams": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@cucumber/gherkin-streams/-/gherkin-streams-5.0.1.tgz", + "integrity": "sha512-/7VkIE/ASxIP/jd4Crlp4JHXqdNFxPGQokqWqsaCCiqBiu5qHoKMxcWNlp9njVL/n9yN4S08OmY3ZR8uC5x74Q==", + "dev": true, + "requires": { + "commander": "9.1.0", + "source-map-support": "0.5.21" + }, + "dependencies": { + "commander": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.1.0.tgz", + "integrity": "sha512-i0/MaqBtdbnJ4XQs4Pmyb+oFQl+q0lsAmokVUH92SlSw4fkeAcG3bVon+Qt7hmtF+u3Het6o4VgrcY3qAoEB6w==", + "dev": true + } + } + }, + "@cucumber/gherkin-utils": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@cucumber/gherkin-utils/-/gherkin-utils-8.0.0.tgz", + "integrity": "sha512-8uIZInEe3cO1cASmy3BA0PbVFUI+xWBnZAxmICbVOPsZaMB85MtESZLafzErgfRQPsHf6uYbVagP7MIjNPM5Jw==", + "dev": true, + "requires": { + "@cucumber/messages": "^19.0.0", + "@teppeis/multimaps": "2.0.0", + "commander": "9.3.0" + }, + "dependencies": { + "@cucumber/messages": { + "version": "19.1.4", + "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-19.1.4.tgz", + "integrity": "sha512-Pksl0pnDz2l1+L5Ug85NlG6LWrrklN9qkMxN5Mv+1XZ3T6u580dnE6mVaxjJRdcOq4tR17Pc0RqIDZMyVY1FlA==", + "dev": true, + "requires": { + "@types/uuid": "8.3.4", + "class-transformer": "0.5.1", + "reflect-metadata": "0.1.13", + "uuid": "9.0.0" + } + }, + "commander": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.3.0.tgz", + "integrity": "sha512-hv95iU5uXPbK83mjrJKuZyFM/LBAoCV/XhVGkS5Je6tl7sxr6A0ITMw5WoRV46/UaJ46Nllm3Xt7IaJhXTIkzw==", + "dev": true + } + } + }, + "@cucumber/html-formatter": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@cucumber/html-formatter/-/html-formatter-20.0.0.tgz", + "integrity": "sha512-I6ZzUZ0CkaaPm6QHThoCRmdcuEIV9kJlNjaWvQ3PRkJm0OscQkQ0SXL/j73U30RDPiCAWwtq6ZSeQrgkTnSK+Q==", + "dev": true, + "requires": {} + }, + "@cucumber/message-streams": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@cucumber/message-streams/-/message-streams-4.0.1.tgz", + "integrity": "sha512-Kxap9uP5jD8tHUZVjTWgzxemi/0uOsbGjd4LBOSxcJoOCRbESFwemUzilJuzNTB8pcTQUh8D5oudUyxfkJOKmA==", + "dev": true, + "requires": {} + }, + "@cucumber/messages": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-21.0.1.tgz", + "integrity": "sha512-pGR7iURM4SF9Qp1IIpNiVQ77J9kfxMkPOEbyy+zRmGABnWWCsqMpJdfHeh9Mb3VskemVw85++e15JT0PYdcR3g==", + "dev": true, + "requires": { + "@types/uuid": "8.3.4", + "class-transformer": "0.5.1", + "reflect-metadata": "0.1.13", + "uuid": "9.0.0" + } + }, + "@cucumber/tag-expressions": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@cucumber/tag-expressions/-/tag-expressions-4.1.0.tgz", + "integrity": "sha512-chTnjxV3vryL75N90wJIMdMafXmZoO2JgNJLYpsfcALL2/IQrRiny3vM9DgD5RDCSt1LNloMtb7rGey9YWxCsA==", + "dev": true + }, "@eslint/eslintrc": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", @@ -38165,6 +39817,12 @@ "defer-to-connect": "^2.0.0" } }, + "@teppeis/multimaps": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@teppeis/multimaps/-/multimaps-2.0.0.tgz", + "integrity": "sha512-TL1adzq1HdxUf9WYduLcQ/DNGYiz71U31QRgbnr0Ef1cPyOUOsBojxHVWpFeOSUucB6Lrs0LxFRA14ntgtkc9w==", + "dev": true + }, "@testim/chrome-version": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@testim/chrome-version/-/chrome-version-1.1.3.tgz", @@ -38264,6 +39922,12 @@ "@types/through": "*" } }, + "@types/is-glob": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/is-glob/-/is-glob-4.0.2.tgz", + "integrity": "sha512-4j5G9Y5jljDSICQ1R2f/Rcyoj6DZmYGneny+p/cDkjep0rkqNg0W73Ty0bVjMUTZgLXHf8oiMjg1XC3CDwCz+g==", + "dev": true + }, "@types/istanbul-lib-coverage": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", @@ -38345,6 +40009,12 @@ "@types/lodash": "*" } }, + "@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==", + "dev": true + }, "@types/minimist": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", @@ -38357,6 +40027,12 @@ "integrity": "sha512-rADY+HtTOA52l9VZWtgQfn4p+UDVM2eDVkMZT1I6syp0YKxW2F9v+0pbRZLsvskhQv/vMb6ZfCay81GHbz5SHg==", "dev": true }, + "@types/mockery": { + "version": "1.4.30", + "resolved": "https://registry.npmjs.org/@types/mockery/-/mockery-1.4.30.tgz", + "integrity": "sha512-uv53RrNdhbkV/3VmVCtfImfYCWC3GTTRn3R11Whni3EJ+gb178tkZBVNj2edLY5CMrB749dQi+SJkg87jsN8UQ==", + "dev": true + }, "@types/node": { "version": "18.11.9", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", @@ -38493,6 +40169,12 @@ "integrity": "sha512-N1rW+njavs70y2cApeIw1vLMYXRwfBy+7trgavGuuTfOd7j1Yh7QTRc/yqsPl6ncokt72ZXuxEU0PiCp9bSwNQ==", "dev": true }, + "@types/uuid": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", + "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", + "dev": true + }, "@types/which": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/which/-/which-1.3.2.tgz", @@ -43207,9 +44889,9 @@ } }, "@wdio/cli": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-7.26.0.tgz", - "integrity": "sha512-xG+ZIzPqzz/Tvhfrogd8oNvTXzzdE+cbkmTHjMGo1hnmnoAQPeAEcV/QqaX5CHFE9DjaguEeadqjcZikB5U2GQ==", + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-7.29.1.tgz", + "integrity": "sha512-dldHNYlnuFUG10TlENbeL41tujqgYD7S/9nzV1J/szBryCO6AIVz/QWn/AUv3zrsO2sn8TNF8BMEXRvLgCxyeg==", "dev": true, "requires": { "@types/ejs": "^3.0.5", @@ -43222,7 +44904,7 @@ "@types/recursive-readdir": "^2.2.0", "@wdio/config": "7.26.0", "@wdio/logger": "7.26.0", - "@wdio/protocols": "7.22.0", + "@wdio/protocols": "7.27.0", "@wdio/types": "7.26.0", "@wdio/utils": "7.26.0", "async-exit-hook": "^2.0.1", @@ -43237,7 +44919,7 @@ "lodash.union": "^4.6.0", "mkdirp": "^1.0.4", "recursive-readdir": "^2.2.2", - "webdriverio": "7.26.0", + "webdriverio": "7.29.1", "yargs": "^17.0.0", "yarn-install": "^1.0.0" } @@ -43255,16 +44937,40 @@ "glob": "^8.0.3" } }, + "@wdio/cucumber-framework": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@wdio/cucumber-framework/-/cucumber-framework-7.29.0.tgz", + "integrity": "sha512-6+3HTeDdFiekwEu+cgRQm6kCz9NBCE2tNY6THtMtl7oNWhhWfDcYYGd8DR2V5Jvb9Y9Pa1qfQ09VJyKiHxzqUA==", + "dev": true, + "requires": { + "@cucumber/cucumber": "8.6.0", + "@cucumber/gherkin": "26.0.2", + "@cucumber/gherkin-streams": "^5.0.0", + "@cucumber/messages": "21.0.1", + "@types/is-glob": "^4.0.1", + "@types/long": "^4.0.1", + "@types/mockery": "^1.4.29", + "@types/sinonjs__fake-timers": "^8.1.2", + "@wdio/logger": "7.26.0", + "@wdio/types": "7.26.0", + "@wdio/utils": "7.26.0", + "expect-webdriverio": "^3.0.0", + "glob": "^8.0.3", + "is-glob": "^4.0.0", + "long": "^4.0.0", + "mockery": "^2.1.0" + } + }, "@wdio/local-runner": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-7.26.0.tgz", - "integrity": "sha512-GdCP7Y8s8qvoctC0WaSGBSmTSbVw74WEJm6Y3n3DpoCI8ABFNkQlhFlqJH+taQDs3sRVEM65bHGcU4C4FOVWXQ==", + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-7.29.1.tgz", + "integrity": "sha512-4w9Dsp9/4+MEU8yG7M8ynsCqpSP6UbKqZ2M/gWpvkvy57rb3eS9evFdIFfRzuQmbsztG9qeAlGILwlZ4/oaopg==", "dev": true, "requires": { "@types/stream-buffers": "^3.0.3", "@wdio/logger": "7.26.0", "@wdio/repl": "7.26.0", - "@wdio/runner": "7.26.0", + "@wdio/runner": "7.29.1", "@wdio/types": "7.26.0", "async-exit-hook": "^2.0.1", "split2": "^4.0.0", @@ -43298,9 +45004,9 @@ } }, "@wdio/protocols": { - "version": "7.22.0", - "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-7.22.0.tgz", - "integrity": "sha512-8EXRR+Ymdwousm/VGtW3H1hwxZ/1g1H99A1lF0U4GuJ5cFWHCd0IVE5H31Z52i8ZruouW8jueMkGZPSo2IIUSQ==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-7.27.0.tgz", + "integrity": "sha512-hT/U22R5i3HhwPjkaKAG0yd59eaOaZB0eibRj2+esCImkb5Y6rg8FirrlYRxIGFVBl0+xZV0jKHzR5+o097nvg==", "dev": true }, "@wdio/repl": { @@ -43331,9 +45037,9 @@ } }, "@wdio/runner": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-7.26.0.tgz", - "integrity": "sha512-DhQiOs10oPeLlv7/R+997arPg5OY7iEgespGkn6r+kdx2o+awxa6PFegQrjJmRKUmNv3TTuKXHouP34TbR/8sw==", + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-7.29.1.tgz", + "integrity": "sha512-lJEk/HJ5IiuvAJws8zTx9XL5LJuoexvjWIZmOmFJ6Gv8qRpUx6b0n+JM7vhhbTeIqs4QLXOwTQUHlDDRldQlzQ==", "dev": true, "requires": { "@wdio/config": "7.26.0", @@ -43342,8 +45048,8 @@ "@wdio/utils": "7.26.0", "deepmerge": "^4.0.0", "gaze": "^1.1.2", - "webdriver": "7.26.0", - "webdriverio": "7.26.0" + "webdriver": "7.27.0", + "webdriverio": "7.29.1" } }, "@wdio/selenium-standalone-service": { @@ -43507,6 +45213,12 @@ "color-convert": "^2.0.1" } }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, "anymatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", @@ -43655,6 +45367,25 @@ "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", "dev": true }, + "assertion-error-formatter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/assertion-error-formatter/-/assertion-error-formatter-3.0.0.tgz", + "integrity": "sha512-6YyAVLrEze0kQ7CmJfUgrLHb+Y7XghmL2Ie7ijVa2Y9ynP3LV+VDiwFk62Dn0qtqbmY0BT0ss6p1xxpiF2PYbQ==", + "dev": true, + "requires": { + "diff": "^4.0.1", + "pad-right": "^0.2.2", + "repeat-string": "^1.6.1" + }, + "dependencies": { + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + } + } + }, "astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -44286,6 +46017,17 @@ "integrity": "sha512-aOBHrLmTQw//WFa2rcF1If9fa3ypkC1wzqqiKHgfdrXTWcU8C4gKVZT77eQAPWN1APys3+uQ0Df07rKauXGEYA==", "dev": true }, + "capital-case": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", + "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -44413,6 +46155,12 @@ "integrity": "sha512-up5ggbaDqOqJ4UqLKZ2naVkyqSJQgJi5lwD6b6mM748ysrghDBX0bx/qJTUHzw7zu6Mq4gycviSF5hJnwceD8w==", "dev": true }, + "class-transformer": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz", + "integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==", + "dev": true + }, "clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", @@ -44434,6 +46182,16 @@ "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", "dev": true }, + "cli-table3": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.2.tgz", + "integrity": "sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw==", + "dev": true, + "requires": { + "@colors/colors": "1.5.0", + "string-width": "^4.2.0" + } + }, "cli-truncate": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", @@ -45170,6 +46928,29 @@ "integrity": "sha512-FUV3xaJ63buRLgHrLQVlVgQnQdR4yqdLGaDu7g8CQcWjInDfM9plBTPI9FRfpahju1UBSaMckeb2/46ApS/V1Q==", "dev": true }, + "cucumber": { + "version": "file:examples/cucumber", + "requires": { + "@wdio/cli": "^7.27.0", + "@wdio/cucumber-framework": "^7.27.0", + "@wdio/local-runner": "^7.27.0", + "@wdio/mocha-framework": "^7.26.0", + "@wdio/spec-reporter": "^7.26.0", + "chromedriver": "latest", + "wdio-chromedriver-service": "^7.3.2", + "wdio-ui5-service": "*" + } + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, "dargs": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", @@ -45370,16 +47151,16 @@ "dev": true }, "devtools": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/devtools/-/devtools-7.26.0.tgz", - "integrity": "sha512-+8HNbNpzgo4Sn+WcrvXuwsHW9XPJfLo4bs9lgs6DPJHIIDXYJXQGsd7940wMX0Rp0D2vHXA4ibK0oTI5rogM3Q==", + "version": "7.28.1", + "resolved": "https://registry.npmjs.org/devtools/-/devtools-7.28.1.tgz", + "integrity": "sha512-sDoszzrXDMLiBQqsg9A5gDqDBwhH4sjYzJIW15lQinB8qgNs0y4o1zdfNlqiKs4HstCA2uFixQeibbDCyMa7hQ==", "dev": true, "requires": { "@types/node": "^18.0.0", "@types/ua-parser-js": "^0.7.33", "@wdio/config": "7.26.0", "@wdio/logger": "7.26.0", - "@wdio/protocols": "7.22.0", + "@wdio/protocols": "7.27.0", "@wdio/types": "7.26.0", "@wdio/utils": "7.26.0", "chrome-launcher": "^0.15.0", @@ -45391,9 +47172,9 @@ } }, "devtools-protocol": { - "version": "0.0.1069585", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1069585.tgz", - "integrity": "sha512-sHmkZB6immWQWU4Wx3ogXwxjQUvQc92MmUDL52+q1z2hQmvpOcvDmbsjwX7QZOPTA32dMV7fgT6zUytcpPzy4A==", + "version": "0.0.1085790", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1085790.tgz", + "integrity": "sha512-f5kfwdOTxPqX5v8ZfAAl9xBgoEVazBYtIONDWIRqYbb7yjOIcnk6vpzCgBCQvav5AuBRLzyUGG0V74OAx93LoA==", "dev": true }, "diff": { @@ -45501,6 +47282,22 @@ } } }, + "duration": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/duration/-/duration-0.2.2.tgz", + "integrity": "sha512-06kgtea+bGreF5eKYgI/36A6pLXggY7oR4p1pq4SmdFBn1ReOL5D8RhG64VrqfTTKNucqqtBAwEj8aB88mcqrg==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.46" + } + }, + "durations": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/durations/-/durations-3.4.2.tgz", + "integrity": "sha512-V/lf7y33dGaypZZetVI1eu7BmvkbC4dItq12OElLRpKuaU5JxQstV2zHwLv8P7cNbQ+KL1WD80zMCTx5dNC4dg==", + "dev": true + }, "eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -45664,12 +47461,44 @@ "is-symbol": "^1.0.2" } }, + "es5-ext": { + "version": "0.10.62", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "dev": true, + "requires": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, "es6-promise": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", "dev": true }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -46011,6 +47840,23 @@ } } }, + "ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dev": true, + "requires": { + "type": "^2.7.2" + }, + "dependencies": { + "type": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", + "dev": true + } + } + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -47293,6 +49139,33 @@ "is-extglob": "^2.1.1" } }, + "is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dev": true, + "requires": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "dependencies": { + "global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "dev": true, + "requires": { + "ini": "2.0.0" + } + }, + "ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true + } + } + }, "is-interactive": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", @@ -47787,6 +49660,15 @@ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, + "knuth-shuffle-seeded": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/knuth-shuffle-seeded/-/knuth-shuffle-seeded-1.0.6.tgz", + "integrity": "sha512-9pFH0SplrfyKyojCLxZfMcvkhf5hH0d+UwR9nTVJ/DDQJGuzcXjTwB7TP7sDfehSudlGGaOLblmEWqv04ERVWg==", + "dev": true, + "requires": { + "seed-random": "~2.2.0" + } + }, "ky": { "version": "0.30.0", "resolved": "https://registry.npmjs.org/ky/-/ky-0.30.0.tgz", @@ -48029,6 +49911,12 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "dev": true + }, "lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", @@ -48137,6 +50025,12 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "lodash.mergewith": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", + "dev": true + }, "lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", @@ -48225,6 +50119,21 @@ "integrity": "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==", "dev": true }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "dev": true + }, + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, "lowercase-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", @@ -48587,6 +50496,12 @@ } } }, + "mockery": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mockery/-/mockery-2.1.0.tgz", + "integrity": "sha512-9VkOmxKlWXoDO/h1jDZaS4lH33aWfRiJiNT/tKj+8OGzrcFDLo8d0syGdbsc3Bc4GvRXPb+NMMvojotmuGJTvA==", + "dev": true + }, "modify-values": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", @@ -48611,6 +50526,23 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "nanoclone": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz", + "integrity": "sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==", + "dev": true + }, "nanoid": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", @@ -48647,6 +50579,12 @@ "integrity": "sha512-+I10J3wKNoKddNxn0CNpoZ3eTZuqxjNM3b1GImVx22+ePI+Y15P8g/j3WsbP0fhzzrFzrtjOAoq5NCCucswXOQ==", "dev": true }, + "next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "dev": true + }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -48703,6 +50641,16 @@ } } }, + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, "node-cache": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/node-cache/-/node-cache-4.1.1.tgz", @@ -49105,6 +51053,15 @@ "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", "dev": true }, + "pad-right": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/pad-right/-/pad-right-0.2.2.tgz", + "integrity": "sha512-4cy8M95ioIGolCoMmm2cMntGR1lPLEbOMzOKu8bzjuJP6JpzEMQcDHmh7hHLYGgob+nKe1YHFMaG4V59HQa89g==", + "dev": true, + "requires": { + "repeat-string": "^1.5.2" + } + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -49370,6 +51327,12 @@ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, + "property-expr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.5.tgz", + "integrity": "sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA==", + "dev": true + }, "proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -49760,6 +51723,12 @@ "redis-errors": "^1.0.0" } }, + "reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "dev": true + }, "regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", @@ -49790,12 +51759,27 @@ "@babel/runtime": "^7.8.4" } }, + "regexp-match-indices": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regexp-match-indices/-/regexp-match-indices-1.0.2.tgz", + "integrity": "sha512-DwZuAkt8NF5mKwGGER1EGh2PRqyvhRhhLviH+R8y8dIuaQROlUfXjt4s9ZTXstIsSkptf06BSvwcEmmfheJJWQ==", + "dev": true, + "requires": { + "regexp-tree": "^0.1.11" + } + }, "regexp-to-ast": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/regexp-to-ast/-/regexp-to-ast-0.5.0.tgz", "integrity": "sha512-tlbJqcMHnPKI9zSrystikWKwHkBqu2a/Sgw01h3zFjvYrMxEDYHzzoMZnUrbIfpTFEsoRnnviOXNCzFiSc54Qw==", "dev": true }, + "regexp-tree": { + "version": "0.1.24", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.24.tgz", + "integrity": "sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw==", + "dev": true + }, "regexp.prototype.flags": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", @@ -49850,6 +51834,12 @@ } } }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true + }, "replace-in-file": { "version": "6.3.5", "resolved": "https://registry.npmjs.org/replace-in-file/-/replace-in-file-6.3.5.tgz", @@ -50045,6 +52035,15 @@ "global-dirs": "^0.1.1" } }, + "resolve-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg/-/resolve-pkg-2.0.0.tgz", + "integrity": "sha512-+1lzwXehGCXSeryaISr6WujZzowloigEofRB+dj75y9RRa/obVcYgbHJd53tdYw8pvZj8GojXaaENws8Ktw/hQ==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, "responselike": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", @@ -50230,6 +52229,12 @@ "integrity": "sha512-gCzsBFLpXrXnq60hYFV4hc4b5a3nIWTKtFWMYvlcXqs5gHKTR445CO3QbFRZW/O+9tRIVTeC46/MXbq1Se/1Sw==", "dev": true }, + "seed-random": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/seed-random/-/seed-random-2.2.0.tgz", + "integrity": "sha512-34EQV6AAHQGhoc0tn/96a9Fsi6v2xdqe/dMUwljGRaFOzR3EgRmECvD0O8vi8X+/uQ50LGHfkNu/Eue5TPKZkQ==", + "dev": true + }, "select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", @@ -50574,6 +52579,16 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", @@ -50684,6 +52699,12 @@ "tweetnacl": "~0.14.0" } }, + "stack-chain": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-2.0.0.tgz", + "integrity": "sha512-GGrHXePi305aW7XQweYZZwiRwR7Js3MWoK/EHzzB9ROdc75nCnjSJVi21rdAGxFl+yCx2L2qdfl5y7NO4lTyqg==", + "dev": true + }, "stack-utils": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", @@ -51087,6 +53108,24 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, + "thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "requires": { + "any-promise": "^1.0.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "requires": { + "thenify": ">= 3.1.0 < 4" + } + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -51145,6 +53184,12 @@ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true }, + "toposort": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", + "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==", + "dev": true + }, "tough-cookie": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", @@ -51267,6 +53312,12 @@ "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", "dev": true }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -51489,6 +53540,15 @@ "picocolors": "^1.0.0" } }, + "upper-case-first": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", + "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -51512,6 +53572,12 @@ "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==", "dev": true }, + "util-arity": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/util-arity/-/util-arity-1.1.0.tgz", + "integrity": "sha512-kkyIsXKwemfSy8ZEoaIz06ApApnWsk5hQO0vLjZS6UkBiGiW++Jsyb8vSBoc0WKlffGoGs5yYy/j5pp8zckrFA==", + "dev": true + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -51672,15 +53738,15 @@ } }, "webdriver": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-7.26.0.tgz", - "integrity": "sha512-T21T31wq29D/rmpFHcAahhdrvfsfXsLs/LBe2su7wL725ptOEoSssuDXjXMkwjf9MSUIXnTcUIz8oJGbKRUMwQ==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-7.27.0.tgz", + "integrity": "sha512-870uIBnrGJ86g3DdYjM+PHhqdWf6NxysSme1KIs6irWxK+LqcaWKWhN75PldE+04xJB2mVWt1tKn0NBBFTWeMg==", "dev": true, "requires": { "@types/node": "^18.0.0", "@wdio/config": "7.26.0", "@wdio/logger": "7.26.0", - "@wdio/protocols": "7.22.0", + "@wdio/protocols": "7.27.0", "@wdio/types": "7.26.0", "@wdio/utils": "7.26.0", "got": "^11.0.2", @@ -51689,16 +53755,16 @@ } }, "webdriverio": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-7.26.0.tgz", - "integrity": "sha512-7m9TeP871aYxZYKBI4GDh5aQZLN9Fd/PASu5K/jEIT65J4OBB6g5ZaycGFOmfNHCfjWKjwPXZuKiN1f2mcrcRg==", + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-7.29.1.tgz", + "integrity": "sha512-2xhoaZvV0tzOgnj8H/B4Yol8LTcIrWdfTdfe01d+ERtdzKCoqimmPNP4vpr2lVRVKL/TW4rfoBTBNvDUaJHe2g==", "dev": true, "requires": { "@types/aria-query": "^5.0.0", "@types/node": "^18.0.0", "@wdio/config": "7.26.0", "@wdio/logger": "7.26.0", - "@wdio/protocols": "7.22.0", + "@wdio/protocols": "7.27.0", "@wdio/repl": "7.26.0", "@wdio/types": "7.26.0", "@wdio/utils": "7.26.0", @@ -51706,8 +53772,8 @@ "aria-query": "^5.0.0", "css-shorthand-properties": "^1.1.1", "css-value": "^0.0.1", - "devtools": "7.26.0", - "devtools-protocol": "^0.0.1069585", + "devtools": "7.28.1", + "devtools-protocol": "^0.0.1085790", "fs-extra": "^10.0.0", "grapheme-splitter": "^1.0.2", "lodash.clonedeep": "^4.5.0", @@ -51720,7 +53786,7 @@ "resq": "^1.9.1", "rgb2hex": "0.2.5", "serialize-error": "^8.0.0", - "webdriver": "7.26.0" + "webdriver": "7.27.0" }, "dependencies": { "brace-expansion": { @@ -52067,6 +54133,21 @@ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true }, + "yup": { + "version": "0.32.11", + "resolved": "https://registry.npmjs.org/yup/-/yup-0.32.11.tgz", + "integrity": "sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.15.4", + "@types/lodash": "^4.14.175", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "nanoclone": "^0.2.1", + "property-expr": "^2.0.4", + "toposort": "^2.0.2" + } + }, "zip-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", @@ -52094,15 +54175,15 @@ } }, "webdriver": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-7.26.0.tgz", - "integrity": "sha512-T21T31wq29D/rmpFHcAahhdrvfsfXsLs/LBe2su7wL725ptOEoSssuDXjXMkwjf9MSUIXnTcUIz8oJGbKRUMwQ==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-7.27.0.tgz", + "integrity": "sha512-870uIBnrGJ86g3DdYjM+PHhqdWf6NxysSme1KIs6irWxK+LqcaWKWhN75PldE+04xJB2mVWt1tKn0NBBFTWeMg==", "dev": true, "requires": { "@types/node": "^18.0.0", "@wdio/config": "7.26.0", "@wdio/logger": "7.26.0", - "@wdio/protocols": "7.22.0", + "@wdio/protocols": "7.27.0", "@wdio/types": "7.26.0", "@wdio/utils": "7.26.0", "got": "^11.0.2", @@ -52111,16 +54192,16 @@ } }, "webdriverio": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-7.26.0.tgz", - "integrity": "sha512-7m9TeP871aYxZYKBI4GDh5aQZLN9Fd/PASu5K/jEIT65J4OBB6g5ZaycGFOmfNHCfjWKjwPXZuKiN1f2mcrcRg==", + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-7.29.1.tgz", + "integrity": "sha512-2xhoaZvV0tzOgnj8H/B4Yol8LTcIrWdfTdfe01d+ERtdzKCoqimmPNP4vpr2lVRVKL/TW4rfoBTBNvDUaJHe2g==", "dev": true, "requires": { "@types/aria-query": "^5.0.0", "@types/node": "^18.0.0", "@wdio/config": "7.26.0", "@wdio/logger": "7.26.0", - "@wdio/protocols": "7.22.0", + "@wdio/protocols": "7.27.0", "@wdio/repl": "7.26.0", "@wdio/types": "7.26.0", "@wdio/utils": "7.26.0", @@ -52128,8 +54209,8 @@ "aria-query": "^5.0.0", "css-shorthand-properties": "^1.1.1", "css-value": "^0.0.1", - "devtools": "7.26.0", - "devtools-protocol": "^0.0.1069585", + "devtools": "7.28.1", + "devtools-protocol": "^0.0.1085790", "fs-extra": "^10.0.0", "grapheme-splitter": "^1.0.2", "lodash.clonedeep": "^4.5.0", @@ -52142,7 +54223,7 @@ "resq": "^1.9.1", "rgb2hex": "0.2.5", "serialize-error": "^8.0.0", - "webdriver": "7.26.0" + "webdriver": "7.27.0" }, "dependencies": { "brace-expansion": { @@ -52489,6 +54570,21 @@ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true }, + "yup": { + "version": "0.32.11", + "resolved": "https://registry.npmjs.org/yup/-/yup-0.32.11.tgz", + "integrity": "sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.15.4", + "@types/lodash": "^4.14.175", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "nanoclone": "^0.2.1", + "property-expr": "^2.0.4", + "toposort": "^2.0.2" + } + }, "zip-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", diff --git a/package.json b/package.json index 1ae5d152..2ea4a5f7 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,8 @@ ".", "examples/fe-app", "examples/ui5-js-app", - "examples/ui5-ts-app" + "examples/ui5-ts-app", + "examples/cucumber" ], "scripts": { "// build time": "refers to developing wdi5/wdio-ui5-service itself", @@ -44,6 +45,7 @@ "_test-h:ts-app": "wait-on tcp:8080 && npm run test -w examples/ui5-ts-app -- --headless", "test-h:js-app": "run-p -r _startApp:js _startApp:js-tooling _test-h:js-app", "test:ts-app": "run-p -r _startApp:ts _test:ts-app", + "test:cucumber": "npm run test --workspace=examples/cucumber", "test-h:ts-app": "run-p -r _startApp:ts _test-h:ts-app", "test:js-app": "run-p -r _startApp:js _startApp:js-tooling _test:js-app", "_test:fe-app": "wait-on tcp:8088 && npm run test:wdi5 --workspace=examples/fe-app", From 39eff965a2ffe1723fab2eed10cbac6e3c6f73e1 Mon Sep 17 00:00:00 2001 From: Volker Buzek Date: Thu, 12 Jan 2023 15:07:58 +0100 Subject: [PATCH 07/15] docs: add missing word --- docs/authentication.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/authentication.md b/docs/authentication.md index 60e11194..c2a9f744 100644 --- a/docs/authentication.md +++ b/docs/authentication.md @@ -12,7 +12,7 @@ Generally speaking, the authentication behavior mimicks that of a regular user s BTP-, Office365- and custom IdP all supply credentials as a user would, meaning they're literally typed into the respective input fields on each login screen. Basic Authentication prepends username and password in encoded form to the URL, resulting in an `HTTP` `GET` in the form of `https://username:encoded-pwd@your-deployed-UI5.app`. -!> Multi-Factor Authentication is not supported as it's nearly to manage any media break (e.g. browser ↔ mobile) in authentication flows out of the box +!> Multi-Factor Authentication is not supported as it's nearly impossible to manage any media break (e.g. browser ↔ mobile) in authentication flows out of the box For you as users, authentication is done at design-time, meaning: **by configuration only, not programmatically**. This especially means that no changes in the test code are needed for using authentication in `wdi5` tests! From 1dd4b1b5fa032249bf51cc5a515093426e810bd7 Mon Sep 17 00:00:00 2001 From: Volker Buzek Date: Thu, 12 Jan 2023 15:46:24 +0100 Subject: [PATCH 08/15] fix: refrain from global console mod KISS and just do a colored .log message --- src/lib/Logger.ts | 41 +++++++++++++++++++++++++------ src/lib/coloredConsole.ts | 51 --------------------------------------- 2 files changed, 34 insertions(+), 58 deletions(-) delete mode 100644 src/lib/coloredConsole.ts diff --git a/src/lib/Logger.ts b/src/lib/Logger.ts index c344ef7f..a7c48ff4 100644 --- a/src/lib/Logger.ts +++ b/src/lib/Logger.ts @@ -1,6 +1,33 @@ -import { chalk as console } from "./coloredConsole" import { wdi5LogLevel } from "../types/wdi5.types" +const translate = (color) => { + switch (color) { + case "red": + return "31" + case "green": + return "32" + case "yellow": + return "33" + case "blue": + return "34" + case "magenta": + return "35" + case "cyan": + return "36" + case "default": + return "0" + default: + return "32" // all is good + } +} + +const colored = + (color) => + (prefix, msg, ...other) => + typeof msg === "string" + ? console.log(`\x1b[${translate(color)}m%s\x1b[0m`, prefix, msg, ...other) + : console.log(prefix, msg, ...other) + export class Logger { private static instance: Record = {} private constructor(sPrefix = "wdi5") { @@ -27,32 +54,32 @@ export class Logger { error(msg: string, ..._: string[]) { if (this.logLevel !== "silent") { - console.red(this.prefix, msg, ..._) + colored("red")(this.prefix, msg, ..._) } } warn(msg: string, ..._: string[]) { if (this.logLevel !== "silent") { - console.yellow(this.prefix, msg, ..._) + colored("yellow")(this.prefix, msg, ..._) } } info(msg: string, ..._: string[]) { if (this.logLevel === "verbose") { - console.blue(this.prefix, msg, ..._) + colored("blue")(this.prefix, msg, ..._) } } success(msg: string, ..._: string[]) { if (this.logLevel === "verbose") { - console.green(this.prefix, msg, ..._) + colored("green")(this.prefix, msg, ..._) } } log(msg: string, ..._: string[]) { if (this.logLevel !== "silent") { - console.default(this.prefix, msg, ..._) + colored("default")(this.prefix, msg, ..._) } } debug(msg: string, ..._: string[]) { if (this.logLevel === "verbose") { - console.magenta(this.prefix, msg, ..._) + colored("magenta")(this.prefix, msg, ..._) } } } diff --git a/src/lib/coloredConsole.ts b/src/lib/coloredConsole.ts deleted file mode 100644 index 573e27fe..00000000 --- a/src/lib/coloredConsole.ts +++ /dev/null @@ -1,51 +0,0 @@ -// the cucumber framework uses the 'console' module which also modifies the console object. -// We need to import the console specifically otherwise we run into duplicate names and node -// will kill the whole processes. - -const node14Up = parseInt(process.versions.node.substring(0, 2)) > 14 -let console = global.console -if (node14Up) { - ;(async () => { - console = await import("node:console") - })() -} - -const translate = (color) => { - switch (color) { - case "red": - return "31" - case "green": - return "32" - case "yellow": - return "33" - case "blue": - return "34" - case "magenta": - return "35" - case "cyan": - return "36" - case "default": - return "0" - default: - return "32" // all is good - } -} - -export const colored = - (color) => - (msg, ...other) => - typeof msg === "string" - ? console.log(`\x1b[${translate(color)}m%s\x1b[0m`, msg, ...other) - : console.log(msg, ...other) - -const _ = { - red: colored("red"), - green: colored("green"), - yellow: colored("yellow"), - blue: colored("blue"), - magenta: colored("magenta"), - cyan: colored("cyan"), - default: colored("default") -} -// we need to use a copy of the original object as 'coloredConsole' is a frozen object -export const chalk = Object.assign(console, { ..._ }) From 6c00ad00b24830e4bc0320e93820d5bde38211df Mon Sep 17 00:00:00 2001 From: Volker Buzek Date: Thu, 12 Jan 2023 15:52:14 +0100 Subject: [PATCH 09/15] chore(deps): denote latest instead of * for chrome --- examples/fe-app/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/fe-app/package.json b/examples/fe-app/package.json index 4db21ea5..79cdcbcc 100644 --- a/examples/fe-app/package.json +++ b/examples/fe-app/package.json @@ -21,7 +21,7 @@ "@wdio/mocha-framework": "^7", "@wdio/selenium-standalone-service": "^7", "@wdio/spec-reporter": "^7", - "chromedriver": "*", + "chromedriver": "latest", "wdio-chromedriver-service": "^7", "wdio-ui5-service": "*", "@sap/ux-ui5-fe-mockserver-middleware": "latest" From 97f931f607d1ee09ae3b96615eeaf8b120ae5299 Mon Sep 17 00:00:00 2001 From: Volker Buzek Date: Thu, 12 Jan 2023 15:55:41 +0100 Subject: [PATCH 10/15] ci: disable chrome update --- .github/workflows/wdi5-tests_fe-app.yml | 16 ++++++++-------- .github/workflows/wdi5-tests_js-app.yml | 16 ++++++++-------- .github/workflows/wdi5-tests_ts-app.yml | 16 ++++++++-------- 3 files changed, 24 insertions(+), 24 deletions(-) diff --git a/.github/workflows/wdi5-tests_fe-app.yml b/.github/workflows/wdi5-tests_fe-app.yml index 3c314886..7f7a3339 100644 --- a/.github/workflows/wdi5-tests_fe-app.yml +++ b/.github/workflows/wdi5-tests_fe-app.yml @@ -26,14 +26,14 @@ jobs: node-version: [14, 16, 18, 19] steps: - - name: update chrome - run: | - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - - sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' - sudo apt-get update - sudo apt-get --only-upgrade install google-chrome-stable - # check chrome version - google-chrome --version + # - name: update chrome + # run: | + # wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - + # sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' + # sudo apt-get update + # sudo apt-get --only-upgrade install google-chrome-stable + # # check chrome version + # google-chrome --version - name: check out repo uses: actions/checkout@v3 diff --git a/.github/workflows/wdi5-tests_js-app.yml b/.github/workflows/wdi5-tests_js-app.yml index 7f74598e..f16d785f 100644 --- a/.github/workflows/wdi5-tests_js-app.yml +++ b/.github/workflows/wdi5-tests_js-app.yml @@ -27,14 +27,14 @@ jobs: node-version: [14, 16, 18, 19] steps: - - name: update chrome - run: | - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - - sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' - sudo apt-get update - sudo apt-get --only-upgrade install google-chrome-stable - # check chrome version - google-chrome --version + # - name: update chrome + # run: | + # wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - + # sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' + # sudo apt-get update + # sudo apt-get --only-upgrade install google-chrome-stable + # # check chrome version + # google-chrome --version - name: check out repo uses: actions/checkout@v3 diff --git a/.github/workflows/wdi5-tests_ts-app.yml b/.github/workflows/wdi5-tests_ts-app.yml index 50b8cae0..23907d36 100644 --- a/.github/workflows/wdi5-tests_ts-app.yml +++ b/.github/workflows/wdi5-tests_ts-app.yml @@ -27,14 +27,14 @@ jobs: node-version: [14, 16, 18, 19] steps: - - name: update chrome - run: | - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - - sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' - sudo apt-get update - sudo apt-get --only-upgrade install google-chrome-stable - # check chrome version - google-chrome --version + # - name: update chrome + # run: | + # wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - + # sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' + # sudo apt-get update + # sudo apt-get --only-upgrade install google-chrome-stable + # # check chrome version + # google-chrome --version - name: check out repo uses: actions/checkout@v3 From e9fff01975d7fffc14b66a2b38495350ff5ed277 Mon Sep 17 00:00:00 2001 From: Volker Buzek Date: Thu, 12 Jan 2023 15:58:28 +0100 Subject: [PATCH 11/15] ci: contd disable chrome update --- .github/workflows/wdi5-tests_auth.yml | 16 ++++++++-------- .github/workflows/wdi5-tests_core.yml | 16 ++++++++-------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/workflows/wdi5-tests_auth.yml b/.github/workflows/wdi5-tests_auth.yml index 10d921e5..7d2858e0 100644 --- a/.github/workflows/wdi5-tests_auth.yml +++ b/.github/workflows/wdi5-tests_auth.yml @@ -34,14 +34,14 @@ jobs: node-version: [14, 16, 18, 19] steps: - - name: update chrome - run: | - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - - sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' - sudo apt-get update - sudo apt-get --only-upgrade install google-chrome-stable - # check chrome version - google-chrome --version + # - name: update chrome + # run: | + # wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - + # sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' + # sudo apt-get update + # sudo apt-get --only-upgrade install google-chrome-stable + # # check chrome version + # google-chrome --version - name: check out repo uses: actions/checkout@v3 diff --git a/.github/workflows/wdi5-tests_core.yml b/.github/workflows/wdi5-tests_core.yml index ad287377..c8ac24e9 100644 --- a/.github/workflows/wdi5-tests_core.yml +++ b/.github/workflows/wdi5-tests_core.yml @@ -26,14 +26,14 @@ jobs: node-version: [14, 16, 18, 19] steps: - - name: update chrome - run: | - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - - sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' - sudo apt-get update - sudo apt-get --only-upgrade install google-chrome-stable - # check chrome version - google-chrome --version + # - name: update chrome + # run: | + # wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - + # sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' + # sudo apt-get update + # sudo apt-get --only-upgrade install google-chrome-stable + # # check chrome version + # google-chrome --version - name: check out repo uses: actions/checkout@v3 From 28fe1995d823e7874da01575670b90a8f0956957 Mon Sep 17 00:00:00 2001 From: Volker Buzek Date: Thu, 12 Jan 2023 16:19:36 +0100 Subject: [PATCH 12/15] test: adjust test for simplified logger --- .../webapp/test/e2e/error-logging.test.js | 76 +++++++++---------- 1 file changed, 34 insertions(+), 42 deletions(-) diff --git a/examples/ui5-js-app/webapp/test/e2e/error-logging.test.js b/examples/ui5-js-app/webapp/test/e2e/error-logging.test.js index 1dae7a88..69452f17 100644 --- a/examples/ui5-js-app/webapp/test/e2e/error-logging.test.js +++ b/examples/ui5-js-app/webapp/test/e2e/error-logging.test.js @@ -1,21 +1,20 @@ const { afterEach } = require("mocha") const sinon = require("sinon") +const { wdi5 } = require("wdio-ui5-service") +const Logger = wdi5.getLogger() const expectDefaultErrorMessages = (wdi5Control) => { - expect(console.red.called).toBeTruthy() + expect(Logger.error.called).toBeTruthy() expect( - console.red + Logger.error .getCall(0) .calledWith( - "[wdi5]", `call of _getControl() failed because of: Error: No DOM element found using the control selector ${JSON.stringify( wdi5Control._controlSelector.selector )}` ) ).toBeTruthy() // dirty but otherwise we have no access to the selector - expect( - console.red.getCall(1).calledWith("[wdi5]", `error retrieving control: ${wdi5Control._wdio_ui5_key}`) - ).toBeTruthy() // dirty but otherwise we have no acces to the key + expect(Logger.error.getCall(1).calledWith(`error retrieving control: ${wdi5Control._wdio_ui5_key}`)).toBeTruthy() // dirty but otherwise we have no acces to the key } /** @@ -27,7 +26,7 @@ describe("Error logging", () => { const sandbox = sinon.createSandbox() beforeEach(() => { - sandbox.spy(console, "red") + sandbox.spy(Logger, "error") }) afterEach(() => { @@ -43,7 +42,7 @@ describe("Error logging", () => { const wdi5ControlWithWrongId = await browser.asControl(selectorWithWrongId) expectDefaultErrorMessages(wdi5ControlWithWrongId) - expect(console.red.callCount).toEqual(2) + expect(Logger.error.callCount).toEqual(2) }) it("should log the correct error messages when 'press' is executed on an not found control; WITHOUT fluent async api", async () => { @@ -56,9 +55,9 @@ describe("Error logging", () => { await wdi5ControlWithWrongId.press() expectDefaultErrorMessages(wdi5ControlWithWrongId) - expect(console.red.callCount).toEqual(3) + expect(Logger.error.callCount).toEqual(3) expect( - console.red.getCall(2).calledWith("[wdi5]", `cannot call press(), because control could not be found`) + Logger.error.getCall(2).calledWith("cannot call press(), because control could not be found") ).toBeTruthy() }) @@ -72,9 +71,9 @@ describe("Error logging", () => { const wdi5ControlWithWrongId = await browser.asControl(selectorWithWrongId).press() expectDefaultErrorMessages(wdi5ControlWithWrongId) - expect(console.red.callCount).toEqual(3) + expect(Logger.error.callCount).toEqual(3) expect( - console.red.getCall(2).calledWith("[wdi5]", `cannot call press(), because control could not be found`) + Logger.error.getCall(2).calledWith("cannot call press(), because control could not be found") ).toBeTruthy() }) @@ -90,11 +89,9 @@ describe("Error logging", () => { expectDefaultErrorMessages(wdi5ControlWithWrongId) - expect(console.red.callCount).toEqual(3) + expect(Logger.error.callCount).toEqual(3) expect( - console.red - .getCall(2) - .calledWith("[wdi5]", `cannot get aggregation "items", because control could not be found`) + Logger.error.getCall(2).calledWith(`cannot get aggregation "items", because control could not be found`) ).toBeTruthy() }) it("should log the correct error messages when 'getAggregation' is executed on an not found control; WITH fluent async api", async () => { @@ -109,11 +106,9 @@ describe("Error logging", () => { const wdi5ControlWithWrongId = await browser.asControl(selectorWithWrongId) expectDefaultErrorMessages(wdi5ControlWithWrongId) - expect(console.red.callCount).toEqual(3) + expect(Logger.error.callCount).toEqual(3) expect( - console.red - .getCall(2) - .calledWith("[wdi5]", `cannot get aggregation "items", because control could not be found`) + Logger.error.getCall(2).calledWith(`cannot get aggregation "items", because control could not be found`) ).toBeTruthy() }) @@ -126,11 +121,11 @@ describe("Error logging", () => { await browser.asControl(selectorWithWrongId).getAggregation("tooltip") - expect(console.red.callCount).toEqual(1) + expect(Logger.error.callCount).toEqual(1) expect( - console.red + Logger.error .getCall(0) - .calledWith("[wdi5]", `call of _getAggregation() failed because of: Error: Aggregation was not found!`) + .calledWith("call of _getAggregation() failed because of: Error: Aggregation was not found!") ).toBeTruthy() }) @@ -146,9 +141,9 @@ describe("Error logging", () => { expectDefaultErrorMessages(wdi5ControlWithWrongId) - expect(console.red.callCount).toEqual(3) + expect(Logger.error.callCount).toEqual(3) expect( - console.red.getCall(2).calledWith("[wdi5]", `cannot call enterText(), because control could not be found`) + Logger.error.getCall(2).calledWith("cannot call enterText(), because control could not be found") ).toBeTruthy() }) it("should log the correct error messages when 'enterText' is executed on an not found control WITH fluent async api", async () => { @@ -162,9 +157,9 @@ describe("Error logging", () => { expectDefaultErrorMessages(wdi5ControlWithWrongId) - expect(console.red.callCount).toEqual(3) + expect(Logger.error.callCount).toEqual(3) expect( - console.red.getCall(2).calledWith("[wdi5]", `cannot call enterText(), because control could not be found`) + Logger.error.getCall(2).calledWith("cannot call enterText(), because control could not be found") ).toBeTruthy() }) @@ -177,19 +172,16 @@ describe("Error logging", () => { await browser.asControl(selectorWithWrongId).getWrongFunction().getSecondWrongFunction() - expect(console.red.callCount).toEqual(2) + expect(Logger.error.callCount).toEqual(2) expect( - console.red + Logger.error .getCall(0) .calledWith( - "[wdi5]", `One of the calls in the queue "getWrongFunction().getSecondWrongFunction()" previously failed!` ) ).toBeTruthy() expect( - console.red - .getCall(1) - .calledWith("[wdi5]", `Cannot read property 'getSecondWrongFunction' in the execution queue!`) + Logger.error.getCall(1).calledWith(`Cannot read property 'getSecondWrongFunction' in the execution queue!`) ).toBeTruthy() }) }) @@ -203,7 +195,7 @@ describe("No error logging", () => { const sandbox = sinon.createSandbox() beforeEach(() => { - sandbox.spy(console, "red") + sandbox.spy(Logger, "error") }) afterEach(() => { @@ -217,7 +209,7 @@ describe("No error logging", () => { } } await browser.asControl(selectorWithWrongId) - expect(console.red.callCount).toEqual(0) + expect(Logger.error.callCount).toEqual(0) }) it("should log when control was not found with 'logging' explicitly set to 'true'", async () => { @@ -230,7 +222,7 @@ describe("No error logging", () => { const wdi5ControlWithWrongId = await browser.asControl(selectorWithWrongId) expectDefaultErrorMessages(wdi5ControlWithWrongId) - expect(console.red.callCount).toEqual(2) + expect(Logger.error.callCount).toEqual(2) }) it("should log nothing when 'press' is executed on an not found control; WITHOUT fluent async api", async () => { @@ -242,7 +234,7 @@ describe("No error logging", () => { } wdi5ControlWithWrongIdNoLog = await browser.asControl(selectorWithWrongId) await wdi5ControlWithWrongIdNoLog.press() - expect(console.red.callCount).toEqual(0) + expect(Logger.error.callCount).toEqual(0) }) it("should log nothing when 'press' is executed on an not found control; WITH fluent async api", async () => { @@ -254,7 +246,7 @@ describe("No error logging", () => { } wdi5ControlWithWrongIdNoLog = await browser.asControl(selectorWithWrongId).press() - expect(console.red.callCount).toEqual(0) + expect(Logger.error.callCount).toEqual(0) }) it("should log nothing when 'enterText' is executed on an not found control; WITHOUT fluent async api", async () => { @@ -268,7 +260,7 @@ describe("No error logging", () => { const wdi5ControlWithWrongId = await browser.asControl(selectorWithWrongId) await wdi5ControlWithWrongId.enterText("test") - expect(console.red.callCount).toEqual(0) + expect(Logger.error.callCount).toEqual(0) }) it("should log nothing when 'enterText' is executed on an not found control; WITH fluent async api", async () => { const selectorWithWrongId = { @@ -280,7 +272,7 @@ describe("No error logging", () => { await browser.asControl(selectorWithWrongId).enterText() - expect(console.red.callCount).toEqual(0) + expect(Logger.error.callCount).toEqual(0) }) it("should log nothing when multiple functions are executed on an control where an error in the queue occurrs; WITH fluent async api", async () => { @@ -294,7 +286,7 @@ describe("No error logging", () => { await browser.asControl(selectorWithWrongId).getWrongFunction().getSecondWrongFunction() - expect(console.red.callCount).toEqual(0) + expect(Logger.error.callCount).toEqual(0) }) it("should log the first selector but not the second", async () => { @@ -313,6 +305,6 @@ describe("No error logging", () => { await browser.asControl(secondSelectorNoLog) expectDefaultErrorMessages(wdi5ControlWithLogOutput) - expect(console.red.callCount).toEqual(2) + expect(Logger.error.callCount).toEqual(2) }) }) From 67ea47f2b89d2bd7c2016d78037f1a1e35b36535 Mon Sep 17 00:00:00 2001 From: Volker Buzek Date: Thu, 12 Jan 2023 17:00:08 +0100 Subject: [PATCH 13/15] ci: re-enable chrome update --- .github/workflows/wdi5-tests_auth.yml | 16 ++++++++-------- .github/workflows/wdi5-tests_core.yml | 9 --------- .github/workflows/wdi5-tests_fe-app.yml | 16 ++++++++-------- .github/workflows/wdi5-tests_js-app.yml | 16 ++++++++-------- .github/workflows/wdi5-tests_ts-app.yml | 16 ++++++++-------- 5 files changed, 32 insertions(+), 41 deletions(-) diff --git a/.github/workflows/wdi5-tests_auth.yml b/.github/workflows/wdi5-tests_auth.yml index 7d2858e0..10d921e5 100644 --- a/.github/workflows/wdi5-tests_auth.yml +++ b/.github/workflows/wdi5-tests_auth.yml @@ -34,14 +34,14 @@ jobs: node-version: [14, 16, 18, 19] steps: - # - name: update chrome - # run: | - # wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - - # sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' - # sudo apt-get update - # sudo apt-get --only-upgrade install google-chrome-stable - # # check chrome version - # google-chrome --version + - name: update chrome + run: | + wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - + sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' + sudo apt-get update + sudo apt-get --only-upgrade install google-chrome-stable + # check chrome version + google-chrome --version - name: check out repo uses: actions/checkout@v3 diff --git a/.github/workflows/wdi5-tests_core.yml b/.github/workflows/wdi5-tests_core.yml index c8ac24e9..a1d01b37 100644 --- a/.github/workflows/wdi5-tests_core.yml +++ b/.github/workflows/wdi5-tests_core.yml @@ -26,15 +26,6 @@ jobs: node-version: [14, 16, 18, 19] steps: - # - name: update chrome - # run: | - # wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - - # sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' - # sudo apt-get update - # sudo apt-get --only-upgrade install google-chrome-stable - # # check chrome version - # google-chrome --version - - name: check out repo uses: actions/checkout@v3 diff --git a/.github/workflows/wdi5-tests_fe-app.yml b/.github/workflows/wdi5-tests_fe-app.yml index 7f7a3339..3c314886 100644 --- a/.github/workflows/wdi5-tests_fe-app.yml +++ b/.github/workflows/wdi5-tests_fe-app.yml @@ -26,14 +26,14 @@ jobs: node-version: [14, 16, 18, 19] steps: - # - name: update chrome - # run: | - # wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - - # sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' - # sudo apt-get update - # sudo apt-get --only-upgrade install google-chrome-stable - # # check chrome version - # google-chrome --version + - name: update chrome + run: | + wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - + sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' + sudo apt-get update + sudo apt-get --only-upgrade install google-chrome-stable + # check chrome version + google-chrome --version - name: check out repo uses: actions/checkout@v3 diff --git a/.github/workflows/wdi5-tests_js-app.yml b/.github/workflows/wdi5-tests_js-app.yml index f16d785f..7f74598e 100644 --- a/.github/workflows/wdi5-tests_js-app.yml +++ b/.github/workflows/wdi5-tests_js-app.yml @@ -27,14 +27,14 @@ jobs: node-version: [14, 16, 18, 19] steps: - # - name: update chrome - # run: | - # wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - - # sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' - # sudo apt-get update - # sudo apt-get --only-upgrade install google-chrome-stable - # # check chrome version - # google-chrome --version + - name: update chrome + run: | + wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - + sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' + sudo apt-get update + sudo apt-get --only-upgrade install google-chrome-stable + # check chrome version + google-chrome --version - name: check out repo uses: actions/checkout@v3 diff --git a/.github/workflows/wdi5-tests_ts-app.yml b/.github/workflows/wdi5-tests_ts-app.yml index 23907d36..50b8cae0 100644 --- a/.github/workflows/wdi5-tests_ts-app.yml +++ b/.github/workflows/wdi5-tests_ts-app.yml @@ -27,14 +27,14 @@ jobs: node-version: [14, 16, 18, 19] steps: - # - name: update chrome - # run: | - # wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - - # sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' - # sudo apt-get update - # sudo apt-get --only-upgrade install google-chrome-stable - # # check chrome version - # google-chrome --version + - name: update chrome + run: | + wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - + sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' + sudo apt-get update + sudo apt-get --only-upgrade install google-chrome-stable + # check chrome version + google-chrome --version - name: check out repo uses: actions/checkout@v3 From 65f2f56c5f040f8cab486a852b8cad71851365fd Mon Sep 17 00:00:00 2001 From: Volker Buzek Date: Thu, 12 Jan 2023 17:10:01 +0100 Subject: [PATCH 14/15] chore: update package-lock --- package-lock.json | 104 ++++++++++++++++++++++++++-------------------- 1 file changed, 60 insertions(+), 44 deletions(-) diff --git a/package-lock.json b/package-lock.json index f60da68e..b1989f82 100644 --- a/package-lock.json +++ b/package-lock.json @@ -32,7 +32,7 @@ "@wdio/local-runner": "^7", "@wdio/mocha-framework": "^7", "@wdio/spec-reporter": "^7", - "chromedriver": "*", + "chromedriver": "latest", "cross-env": "^7.0.3", "deepmerge": "^4.2.2", "eslint": "^8.27.0", @@ -76,13 +76,13 @@ "name": "incidents", "version": "0.0.1", "devDependencies": { - "@sap/ux-ui5-fe-mockserver-middleware": "*", + "@sap/ux-ui5-fe-mockserver-middleware": "latest", "@wdio/cli": "^7", "@wdio/local-runner": "^7", "@wdio/mocha-framework": "^7", "@wdio/selenium-standalone-service": "^7", "@wdio/spec-reporter": "^7", - "chromedriver": "*", + "chromedriver": "latest", "detect-libc": "^2.0.1", "wdio-chromedriver-service": "^7", "wdio-ui5-service": "*" @@ -99,7 +99,7 @@ "@wdio/mocha-framework": "^7", "@wdio/selenium-standalone-service": "^7", "@wdio/spec-reporter": "^7", - "chromedriver": "*", + "chromedriver": "latest", "ui5-middleware-simpleproxy": "^0.9.0", "wdio-chromedriver-service": "^7", "wdio-ui5-service": "*" @@ -113,7 +113,7 @@ "@babel/core": "^7.18.10", "@babel/preset-env": "^7.18.10", "@babel/preset-typescript": "^7.18.6", - "@openui5/ts-types-esm": "*", + "@openui5/ts-types-esm": "latest", "@sap/approuter": "^11.6.1", "@types/jquery": "3.5.14", "babel-preset-transform-ui5": "^7.0.5", @@ -5822,6 +5822,12 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, + "node_modules/@ui5/cli/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "extraneous": true + }, "node_modules/@ui5/cli/node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -9304,9 +9310,9 @@ "dev": true }, "node_modules/axios": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.1.3.tgz", - "integrity": "sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.2.tgz", + "integrity": "sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q==", "dev": true, "dependencies": { "follow-redirects": "^1.15.0", @@ -10230,14 +10236,14 @@ } }, "node_modules/chromedriver": { - "version": "107.0.3", - "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-107.0.3.tgz", - "integrity": "sha512-jmzpZgctCRnhYAn0l/NIjP4vYN3L8GFVbterTrRr2Ly3W5rFMb9H8EKGuM5JCViPKSit8FbE718kZTEt3Yvffg==", + "version": "109.0.0", + "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-109.0.0.tgz", + "integrity": "sha512-jdmBq11IUwfThLFiygGTZ89qbROSQI4bICQjvOVQy2Bqr1LwC+MFkhwyZp3YG99eehQbZuTlQmmfCZBfpewTNA==", "dev": true, "hasInstallScript": true, "dependencies": { "@testim/chrome-version": "^1.1.3", - "axios": "^1.1.3", + "axios": "^1.2.1", "compare-versions": "^5.0.1", "extract-zip": "^2.0.1", "https-proxy-agent": "^5.0.1", @@ -14626,9 +14632,9 @@ "dev": true }, "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", "dev": true, "bin": { "json5": "lib/cli.js" @@ -25428,6 +25434,11 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, + "fsevents": { + "version": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "extraneous": true + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -28814,9 +28825,9 @@ "dev": true }, "axios": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.1.3.tgz", - "integrity": "sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.2.tgz", + "integrity": "sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q==", "dev": true, "requires": { "follow-redirects": "^1.15.0", @@ -29514,13 +29525,13 @@ } }, "chromedriver": { - "version": "107.0.3", - "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-107.0.3.tgz", - "integrity": "sha512-jmzpZgctCRnhYAn0l/NIjP4vYN3L8GFVbterTrRr2Ly3W5rFMb9H8EKGuM5JCViPKSit8FbE718kZTEt3Yvffg==", + "version": "109.0.0", + "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-109.0.0.tgz", + "integrity": "sha512-jdmBq11IUwfThLFiygGTZ89qbROSQI4bICQjvOVQy2Bqr1LwC+MFkhwyZp3YG99eehQbZuTlQmmfCZBfpewTNA==", "dev": true, "requires": { "@testim/chrome-version": "^1.1.3", - "axios": "^1.1.3", + "axios": "^1.2.1", "compare-versions": "^5.0.1", "extract-zip": "^2.0.1", "https-proxy-agent": "^5.0.1", @@ -32316,13 +32327,13 @@ "incidents": { "version": "file:examples/fe-app", "requires": { - "@sap/ux-ui5-fe-mockserver-middleware": "*", + "@sap/ux-ui5-fe-mockserver-middleware": "latest", "@wdio/cli": "^7", "@wdio/local-runner": "^7", "@wdio/mocha-framework": "^7", "@wdio/selenium-standalone-service": "^7", "@wdio/spec-reporter": "^7", - "chromedriver": "*", + "chromedriver": "latest", "detect-libc": "^2.0.1", "wdio-chromedriver-service": "^7", "wdio-ui5-service": "*" @@ -32922,9 +32933,9 @@ "dev": true }, "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", "dev": true }, "jsonfile": { @@ -36762,7 +36773,7 @@ "@wdio/mocha-framework": "^7", "@wdio/selenium-standalone-service": "^7", "@wdio/spec-reporter": "^7", - "chromedriver": "*", + "chromedriver": "latest", "ui5-middleware-simpleproxy": "^0.9.0", "wdio-chromedriver-service": "^7", "wdio-ui5-service": "*" @@ -36807,7 +36818,7 @@ "@babel/core": "^7.18.10", "@babel/preset-env": "^7.18.10", "@babel/preset-typescript": "^7.18.6", - "@openui5/ts-types-esm": "*", + "@openui5/ts-types-esm": "latest", "@sap/approuter": "^11.6.1", "@types/jquery": "3.5.14", "babel-preset-transform-ui5": "^7.0.5", @@ -37131,7 +37142,7 @@ "@wdio/local-runner": "^7", "@wdio/mocha-framework": "^7", "@wdio/spec-reporter": "^7", - "chromedriver": "*", + "chromedriver": "latest", "cross-env": "^7.0.3", "cucumber": "file:examples/cucumber", "deepmerge": "^4.2.2", @@ -42033,6 +42044,11 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, + "fsevents": { + "version": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "extraneous": true + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -45419,9 +45435,9 @@ "dev": true }, "axios": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.1.3.tgz", - "integrity": "sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.2.tgz", + "integrity": "sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q==", "dev": true, "requires": { "follow-redirects": "^1.15.0", @@ -46119,13 +46135,13 @@ } }, "chromedriver": { - "version": "107.0.3", - "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-107.0.3.tgz", - "integrity": "sha512-jmzpZgctCRnhYAn0l/NIjP4vYN3L8GFVbterTrRr2Ly3W5rFMb9H8EKGuM5JCViPKSit8FbE718kZTEt3Yvffg==", + "version": "109.0.0", + "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-109.0.0.tgz", + "integrity": "sha512-jdmBq11IUwfThLFiygGTZ89qbROSQI4bICQjvOVQy2Bqr1LwC+MFkhwyZp3YG99eehQbZuTlQmmfCZBfpewTNA==", "dev": true, "requires": { "@testim/chrome-version": "^1.1.3", - "axios": "^1.1.3", + "axios": "^1.2.1", "compare-versions": "^5.0.1", "extract-zip": "^2.0.1", "https-proxy-agent": "^5.0.1", @@ -48921,13 +48937,13 @@ "incidents": { "version": "file:examples/fe-app", "requires": { - "@sap/ux-ui5-fe-mockserver-middleware": "*", + "@sap/ux-ui5-fe-mockserver-middleware": "latest", "@wdio/cli": "^7", "@wdio/local-runner": "^7", "@wdio/mocha-framework": "^7", "@wdio/selenium-standalone-service": "^7", "@wdio/spec-reporter": "^7", - "chromedriver": "*", + "chromedriver": "latest", "detect-libc": "^2.0.1", "wdio-chromedriver-service": "^7", "wdio-ui5-service": "*" @@ -49527,9 +49543,9 @@ "dev": true }, "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", "dev": true }, "jsonfile": { @@ -53367,7 +53383,7 @@ "@wdio/mocha-framework": "^7", "@wdio/selenium-standalone-service": "^7", "@wdio/spec-reporter": "^7", - "chromedriver": "*", + "chromedriver": "latest", "ui5-middleware-simpleproxy": "^0.9.0", "wdio-chromedriver-service": "^7", "wdio-ui5-service": "*" @@ -53412,7 +53428,7 @@ "@babel/core": "^7.18.10", "@babel/preset-env": "^7.18.10", "@babel/preset-typescript": "^7.18.6", - "@openui5/ts-types-esm": "*", + "@openui5/ts-types-esm": "latest", "@sap/approuter": "^11.6.1", "@types/jquery": "3.5.14", "babel-preset-transform-ui5": "^7.0.5", From fe284939226da0016ae907d0462456674053bc9f Mon Sep 17 00:00:00 2001 From: Volker Buzek Date: Fri, 13 Jan 2023 11:26:57 +0100 Subject: [PATCH 15/15] ci: try reducing concurrency for constantly flaking tests...grmpf --- examples/ui5-ts-app/wdio-ui5.conf.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/ui5-ts-app/wdio-ui5.conf.ts b/examples/ui5-ts-app/wdio-ui5.conf.ts index 99a03749..64387eb1 100644 --- a/examples/ui5-ts-app/wdio-ui5.conf.ts +++ b/examples/ui5-ts-app/wdio-ui5.conf.ts @@ -21,7 +21,7 @@ export const config: wdi5Config = { maxInstances: 10, capabilities: [ { - maxInstances: 5, + maxInstances: 2, browserName: "chrome", "goog:chromeOptions": { args: