diff --git a/.github/workflows/publish-btp.yml b/.github/workflows/publish-btp.yml
index a512fca1..be6b2d8c 100644
--- a/.github/workflows/publish-btp.yml
+++ b/.github/workflows/publish-btp.yml
@@ -15,7 +15,7 @@ jobs:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
- node-version: 16
+ node-version: 18
cache: "npm"
cache-dependency-path: "**/package-lock.json"
registry-url: https://registry.npmjs.org/
@@ -29,18 +29,21 @@ jobs:
uses: actions/upload-artifact@v3
with:
name: mtar
- path: |
- examples/ui5-ts-app/mta_archives/ui5-approuter_1.0.0.mtar
+ path: examples/ui5-ts-app/mta_archives/ui5-approuter_1.0.0.mtar
publish-sample-ts-app-to-btp:
needs: build-sample-ts-app
runs-on: ubuntu-latest
- container: ppiper/cf-cli
steps:
- name: get mtar
uses: actions/download-artifact@v3
with:
name: mtar
- - run: |
- cf login -a https://api.cf.eu20.hana.ondemand.com -u ${{secrets.BTP_LOGIN}} -p ${{secrets.BTP_PASSWORD}} -o "${{secrets.BTP_ORG}}" -s ${{secrets.BTP_SPACE}}
- cf deploy examples/ui5-ts-app/mta_archives/ui5-approuter_1.0.0.mtar -f
+ - uses: elliottpope/cloudfoundry-cli-action
+ with:
+ CF_API: https://api.cf.eu20.hana.ondemand.com
+ USERNAME: ${{ secrets.BTP_LOGIN }}
+ PASSWORD: ${{ secrets.BTP_PASSWORD }}
+ ORG: ${{secrets.BTP_ORG}}
+ SPACE: ${{secrets.BTP_SPACE}}
+ COMMAND: deploy examples/ui5-ts-app/mta_archives/ui5-approuter_1.0.0.mtar -f
diff --git a/.github/workflows/wdi5-tests_js-app.yml b/.github/workflows/wdi5-tests_js-app.yml
index 69df9e53..be794f3a 100644
--- a/.github/workflows/wdi5-tests_js-app.yml
+++ b/.github/workflows/wdi5-tests_js-app.yml
@@ -61,6 +61,10 @@ jobs:
- name: build
run: npm run build
- # run wdi5 tests within app(s)
- - name: test js-app
+ # run wdi5 tests within CJS app/env
+ - name: test cjs js-app
run: npm run test-h:js-app
+
+ # run wdi5 tests within ESM app/env
+ - name: test esm js-app
+ run: npm run test-h:js-app:esm
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 6b20ac3e..f84c5731 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -4,5 +4,6 @@
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"javascript.preferences.importModuleSpecifierEnding": "js",
- "typescript.preferences.importModuleSpecifierEnding": "js"
+ "typescript.preferences.importModuleSpecifierEnding": "js",
+ "search.useIgnoreFiles": true
}
diff --git a/client-side-js/fireEvent.cjs b/client-side-js/fireEvent.cjs
index 57162add..e2bfc496 100644
--- a/client-side-js/fireEvent.cjs
+++ b/client-side-js/fireEvent.cjs
@@ -17,7 +17,7 @@ async function clientSide_fireEvent(webElement, eventName, oOptions, browserInst
}
oControl.fireEvent(eventName, oOptions)
// convert to boolean
- done({ status: 0, resuklt: true })
+ done({ status: 0, result: true })
} catch (e) {
window.wdi5.errorHandling.bind(this, done)
}
diff --git a/docs/migration.md b/docs/migration.md
new file mode 100644
index 00000000..939ae21c
--- /dev/null
+++ b/docs/migration.md
@@ -0,0 +1,119 @@
+# Migrate from a previous version
+
+## from `^1` to `^2`
+
+Version >= 2 of `wdi5` is WebdriverIO v8 compatible. This entails a move to ESM as primary module, with CJS compatibility ensured.
+
+### no more explicit browser driver needed!
+
+WebdriverIO now automates downloading and starting the appropriate driver corresponding to the `browser` specified in the `capabilites` section of the config file (see also https://webdriver.io/blog/2023/07/31/driver-management):
+
+```diff
+- services: ["chromedriver", "ui5"],
++ services: ["ui5"],
+ //...
+ capabilities: [{
+ browserName: "chrome"
+ }]
+```
+
+Setting `browserName: "chrome"` is enough to tell `wdi5`/`wdio` to run the tests with the stable version of Chrome - no more `"chromedriver"` needed in the `services`!
+To switch to Safari on macOS, following the above example is as easy as changing the `browserName`:
+
+```js
+// wdio.conf.js
+ services: ["ui5"],
+ //...
+ capabilities: [{
+ browserName: "safari"
+ }]
+```
+
+?> this is an _optional_ change - `wdi5` will continue to work also with explicitly denoting the browser driver in `services`!
+
+### check file system location reference of spec files in wdio.config.(j|t)s
+
+directory references start from the directory the config file is in now, not from `cwd` or project root:
+
+**Example**: `wdi5` config file is located adjacent to `webapp`:
+
+```console
+.
+├── e2e-test-config
+│ └── wdi5.conf.js
+# ...
+└── webapp
+ ├── test
+ │ └── e2e
+ │ ├── aggregation.test.js
+ │ ├── allControls.test.js
+ │ ├── allControlsForce.test.js
+ │ ├── basic.test.js
+# ...
+```
+
+Config file change:
+
+```diff
+const config = {
+- specs: [join("webapp", "test", "e2e", "ui5-late.test.js")],
++ specs: [join("..", "webapp", "test", "e2e", "ui5-late.test.js")],
+ // ...
+}
+```
+
+**Example**: `wdi5` config file is located in the same directory as the tests:
+
+```console
+.
+├── regular-journey.test.ts
+├── testlib-journey.test.ts
+└── wdio.conf.ts
+```
+
+Config file change:
+
+```diff
+export const config: wdi5Config = {
+- specs: ["./test/e2e/workzone/*.test.ts"],
++ specs: ["./*.test.ts"],
+ // ...
+}
+```
+
+### usage of devtools automation protocol
+
+Now requires using the `devtools` package (which is now a dependency of `wdi5`) and explicit configuration in the `*.conf.(j|t)s`-file:
+
+```diff
+ export const config: wdi5Config = {
+ baseUrl: "https://your-app",
+ services: ["ui5"],
+ specs: [resolve("test/e2e/Protocol.test.ts")],
++ automationProtocol: "devtools",
+ capabilities: [
+ {
+ //...
+ }
+ ]
+ }
+```
+
+### use `wdi5` as ESM module
+
+With `wdi5` v2, it is possible to write tests in an ESM module environment (see [/examples/ui5-js-app-esm](https://github.com/ui5-community/wdi5/blob/main/examples/ui5-js-app-esm)). The `describe` and `it` syntax remains the same as in an CJS environment. The major difference is in the way `wdi5` and third party modules are imported in ESM-style JavaScript files.
+
+Sample excerpt:
+
+```js
+// file: basic.test.js
+import { wdi5 } from "wdio-ui5-service" // <--
+
+describe("...", () => {
+ it("...", () => {
+ await browser.asControl(selector).someMethod()
+ wdi5.getLogger("esm!").log("Hello ESM World!")
+ })
+})
+
+```
diff --git a/examples/ui5-js-app-esm/jsconfig.json b/examples/ui5-js-app-esm/jsconfig.json
new file mode 100644
index 00000000..58167ccd
--- /dev/null
+++ b/examples/ui5-js-app-esm/jsconfig.json
@@ -0,0 +1,12 @@
+{
+ "compilerOptions": {
+ "types": [
+ "node",
+ "@openui5/types",
+ "@wdio/globals/types",
+ "@wdio/mocha-framework",
+ "wdio-ui5-service/esm",
+ "expect-webdriverio"
+ ]
+ }
+}
diff --git a/examples/ui5-js-app-esm/package.json b/examples/ui5-js-app-esm/package.json
new file mode 100644
index 00000000..39895fd4
--- /dev/null
+++ b/examples/ui5-js-app-esm/package.json
@@ -0,0 +1,28 @@
+{
+ "name": "ui5-app-esm",
+ "version": "0.8.15-notimportant",
+ "private": true,
+ "description": "sample ESM ui5 app for testing wdi5",
+ "license": "UNLICENSED",
+ "author": "j&s-soft GmbH",
+ "main": "webapp/index.html",
+ "type": "module",
+ "scripts": {
+ "start": "ui5 serve -p 8082",
+ "wdi5": "wdio ./webapp/test/e2e/wdio.conf.js"
+ },
+ "devDependencies": {
+ "@ui5/cli": "^3",
+ "@types/sinon": "^10.0.16",
+ "sinon": "^15.2.0",
+ "@wdio/cli": "^8",
+ "@wdio/local-runner": "^8",
+ "@wdio/mocha-framework": "^8",
+ "@wdio/spec-reporter": "^8",
+ "ui5-middleware-simpleproxy": "latest",
+ "wdio-ui5-service": "*"
+ },
+ "dependencies": {
+ "@wdio/sauce-service": "^8"
+ }
+}
diff --git a/examples/ui5-js-app-esm/ui5.yaml b/examples/ui5-js-app-esm/ui5.yaml
new file mode 100644
index 00000000..c9620c53
--- /dev/null
+++ b/examples/ui5-js-app-esm/ui5.yaml
@@ -0,0 +1,12 @@
+specVersion: "2.0"
+metadata:
+ name: ui5-app
+type: application
+server:
+ customMiddleware:
+ - name: ui5-middleware-simpleproxy
+ afterMiddleware: compression
+ mountPath: /V2
+ configuration:
+ baseUri: "https://services.odata.org/V2"
+ strictSSL: false
diff --git a/examples/ui5-js-app-esm/webapp/Component.js b/examples/ui5-js-app-esm/webapp/Component.js
new file mode 100644
index 00000000..49e33a46
--- /dev/null
+++ b/examples/ui5-js-app-esm/webapp/Component.js
@@ -0,0 +1,33 @@
+sap.ui.define(
+ [
+ "sap/ui/core/UIComponent",
+ "sap/ui/Device",
+ "test/Sample/model/models",
+ "sap/ui/core/ComponentSupport" // make sure to include the ComponentSupport in the bundle
+ ],
+ function (UIComponent, Device, models) {
+ "use strict"
+
+ return UIComponent.extend("test.Sample.Component", {
+ metadata: {
+ manifest: "json"
+ },
+
+ /**
+ * The component is initialized by UI5 automatically during the startup of the app and calls the init method once.
+ * @public
+ * @override
+ */
+ init: function () {
+ // call the base component's init function
+ UIComponent.prototype.init.apply(this, arguments)
+
+ // enable routing
+ this.getRouter().initialize()
+
+ // set the device model
+ this.setModel(models.createDeviceModel(), "device")
+ }
+ })
+ }
+)
diff --git a/examples/ui5-js-app-esm/webapp/controller/App.controller.js b/examples/ui5-js-app-esm/webapp/controller/App.controller.js
new file mode 100644
index 00000000..08aff631
--- /dev/null
+++ b/examples/ui5-js-app-esm/webapp/controller/App.controller.js
@@ -0,0 +1,5 @@
+sap.ui.define(["test/Sample/controller/BaseController"], function (Controller) {
+ return Controller.extend("test.Sample.controller.App", {
+ onInit: function () {}
+ })
+})
diff --git a/examples/ui5-js-app-esm/webapp/controller/BaseController.js b/examples/ui5-js-app-esm/webapp/controller/BaseController.js
new file mode 100644
index 00000000..b1d4eac7
--- /dev/null
+++ b/examples/ui5-js-app-esm/webapp/controller/BaseController.js
@@ -0,0 +1,63 @@
+sap.ui.define(
+ ["sap/ui/core/mvc/Controller", "sap/ui/core/routing/History"],
+ /**
+ * @param {typeof sap.ui.core.mvc.Controller} Controller
+ * @param {typeof sap.ui.core.routing.History} History
+ * @yields {typeof sap.ui.core.mvc.Controller}
+ */
+ function (Controller, History) {
+ "use strict"
+
+ return Controller.extend("test.Sample.controller.BaseController", {
+ /**
+ * inits on controller instantiation
+ */
+ onInit: function () {},
+
+ /**
+ * Convenience method for accessing the router in every controller of the application.
+ * @public
+ * @returns {sap.ui.core.routing.Router} the router for this component
+ */
+ getRouter: function () {
+ return this.getOwnerComponent().getRouter()
+ },
+
+ /**
+ * Convenience method for getting the view model by name in every controller of the application.
+ * @public
+ * @param {string} sName the model name
+ * @returns {sap.ui.model.Model} the model instance
+ */
+ getModel: function (sName) {
+ return this.getView().getModel(sName)
+ },
+
+ /**
+ * Convenience method for getting the resource bundle.
+ * @public
+ * @returns {sap.ui.model.resource.ResourceModel} the resourceModel of the component
+ */
+ getResourceBundle: function () {
+ return this.getOwnerComponent().getModel("i18n").getResourceBundle()
+ },
+
+ /**
+ * Event handler for navigating back.
+ * It there is a history entry we go one step back in the browser history
+ * If not, it will replace the current entry of the browser history with the master route.
+ * @public
+ */
+ onNavBack: function () {
+ const sPreviousHash = History.getInstance().getPreviousHash()
+
+ if (sPreviousHash !== undefined) {
+ // eslint-disable-next-line
+ history.go(-1)
+ } else {
+ this.getRouter().navTo("RouteMain", {}, true)
+ }
+ }
+ })
+ }
+)
diff --git a/examples/ui5-js-app-esm/webapp/controller/Calendar.controller.js b/examples/ui5-js-app-esm/webapp/controller/Calendar.controller.js
new file mode 100644
index 00000000..8fbbdae0
--- /dev/null
+++ b/examples/ui5-js-app-esm/webapp/controller/Calendar.controller.js
@@ -0,0 +1,478 @@
+sap.ui.define(
+ ["./BaseController", "sap/ui/model/json/JSONModel", "sap/m/MessageBox"],
+ function (Controller, JSONModel, MessageBox) {
+ "use strict"
+
+ return Controller.extend("test.Sample.controller.Calendar", {
+ onInit: function () {
+ // create model
+ var oModel = new JSONModel()
+ oModel.setData({
+ startDate: new Date("2017", "0", "15", "8", "0"),
+ people: [
+ {
+ pic: "sap-icon://employee",
+ name: "John Miller",
+ role: "team member",
+ appointments: [
+ {
+ start: new Date("2017", "0", "8", "08", "30"),
+ end: new Date("2017", "0", "8", "09", "30"),
+ title: "Meet Max Mustermann",
+ type: "Type02",
+ tentative: false
+ },
+ {
+ start: new Date("2017", "0", "11", "10", "0"),
+ end: new Date("2017", "0", "11", "12", "0"),
+ title: "Team meeting",
+ info: "room 1",
+ type: "Type01",
+ pic: "sap-icon://sap-ui5",
+ tentative: false
+ },
+ {
+ start: new Date("2017", "0", "12", "11", "30"),
+ end: new Date("2017", "0", "12", "13", "30"),
+ title: "Lunch",
+ info: "canteen",
+ type: "Type03",
+ tentative: true
+ },
+ {
+ start: new Date("2017", "0", "15", "08", "30"),
+ end: new Date("2017", "0", "15", "09", "30"),
+ title: "Meet Max Mustermann",
+ type: "Type02",
+ tentative: false
+ },
+ {
+ start: new Date("2017", "0", "15", "10", "0"),
+ end: new Date("2017", "0", "15", "12", "0"),
+ title: "Team meeting",
+ info: "room 1",
+ type: "Type01",
+ pic: "sap-icon://sap-ui5",
+ tentative: false
+ },
+ {
+ start: new Date("2017", "0", "15", "11", "30"),
+ end: new Date("2017", "0", "15", "13", "30"),
+ title: "Lunch",
+ info: "canteen",
+ type: "Type03",
+ tentative: true
+ },
+ {
+ start: new Date("2017", "0", "15", "13", "30"),
+ end: new Date("2017", "0", "15", "17", "30"),
+ title: "Discussion with clients",
+ info: "online meeting",
+ type: "Type02",
+ tentative: false
+ },
+ {
+ start: new Date("2017", "0", "16", "04", "00"),
+ end: new Date("2017", "0", "16", "22", "30"),
+ title: "Discussion of the plan",
+ info: "Online meeting",
+ type: "Type04",
+ tentative: false
+ },
+ {
+ start: new Date("2017", "0", "18", "08", "30"),
+ end: new Date("2017", "0", "18", "09", "30"),
+ title: "Meeting with the manager",
+ type: "Type02",
+ tentative: false
+ },
+ {
+ start: new Date("2017", "0", "18", "11", "30"),
+ end: new Date("2017", "0", "18", "13", "30"),
+ title: "Lunch",
+ info: "canteen",
+ type: "Type03",
+ tentative: true
+ },
+ {
+ start: new Date("2017", "0", "18", "1", "0"),
+ end: new Date("2017", "0", "18", "22", "0"),
+ title: "Team meeting",
+ info: "regular",
+ type: "Type01",
+ pic: "sap-icon://sap-ui5",
+ tentative: false
+ },
+ {
+ start: new Date("2017", "0", "21", "00", "30"),
+ end: new Date("2017", "0", "21", "23", "30"),
+ title: "New Product",
+ info: "room 105",
+ type: "Type03",
+ tentative: true
+ },
+ {
+ start: new Date("2017", "0", "25", "11", "30"),
+ end: new Date("2017", "0", "25", "13", "30"),
+ title: "Lunch",
+ type: "Type03",
+ tentative: true
+ },
+ {
+ start: new Date("2017", "0", "29", "10", "0"),
+ end: new Date("2017", "0", "29", "12", "0"),
+ title: "Team meeting",
+ info: "room 1",
+ type: "Type01",
+ pic: "sap-icon://sap-ui5",
+ tentative: false
+ },
+ {
+ start: new Date("2017", "0", "30", "08", "30"),
+ end: new Date("2017", "0", "30", "09", "30"),
+ title: "Meet Max Mustermann",
+ type: "Type02",
+ tentative: false
+ },
+ {
+ start: new Date("2017", "0", "30", "10", "0"),
+ end: new Date("2017", "0", "30", "12", "0"),
+ title: "Team meeting",
+ info: "room 1",
+ type: "Type01",
+ pic: "sap-icon://sap-ui5",
+ tentative: false
+ },
+ {
+ start: new Date("2017", "0", "30", "11", "30"),
+ end: new Date("2017", "0", "30", "13", "30"),
+ title: "Lunch",
+ type: "Type03",
+ tentative: true
+ },
+ {
+ start: new Date("2017", "0", "30", "13", "30"),
+ end: new Date("2017", "0", "30", "17", "30"),
+ title: "Discussion with clients",
+ type: "Type02",
+ tentative: false
+ },
+ {
+ start: new Date("2017", "0", "31", "10", "00"),
+ end: new Date("2017", "0", "31", "11", "30"),
+ title: "Meeting of the day",
+ info: "Special meeting",
+ type: "Type04",
+ tentative: false
+ },
+ {
+ start: new Date("2017", "1", "3", "08", "30"),
+ end: new Date("2017", "1", "13", "09", "30"),
+ title: "Meeting with the manager",
+ type: "Type02",
+ tentative: false
+ },
+ {
+ start: new Date("2017", "1", "4", "10", "0"),
+ end: new Date("2017", "1", "4", "12", "0"),
+ title: "Team meeting",
+ info: "room 1",
+ type: "Type01",
+ pic: "sap-icon://sap-ui5",
+ tentative: false
+ },
+ {
+ start: new Date("2017", "2", "30", "10", "0"),
+ end: new Date("2017", "4", "33", "12", "0"),
+ title: "Working out of the building",
+ type: "Type07",
+ pic: "sap-icon://sap-ui5",
+ tentative: false
+ }
+ ],
+ headers: [
+ {
+ start: new Date("2017", "0", "15", "8", "0"),
+ end: new Date("2017", "0", "15", "10", "0"),
+ title: "Reminder",
+ type: "Type06"
+ },
+ {
+ start: new Date("2017", "0", "15", "17", "0"),
+ end: new Date("2017", "0", "15", "19", "0"),
+ title: "Reminder",
+ type: "Type06"
+ },
+ {
+ start: new Date("2017", "8", "1", "0", "0"),
+ end: new Date("2017", "10", "30", "23", "59"),
+ title: "New quarter",
+ type: "Type10",
+ tentative: false
+ },
+ {
+ start: new Date("2018", "1", "1", "0", "0"),
+ end: new Date("2018", "3", "30", "23", "59"),
+ title: "New quarter",
+ type: "Type10",
+ tentative: false
+ }
+ ]
+ },
+ {
+ pic: "sap-icon://employee",
+ name: "Donna Moore",
+ role: "team member",
+ appointments: [
+ {
+ start: new Date("2017", "0", "10", "18", "00"),
+ end: new Date("2017", "0", "10", "19", "10"),
+ title: "Meet and greet",
+ info: "Friends meeting",
+ type: "Type04",
+ tentative: false
+ },
+ {
+ start: new Date("2017", "0", "9", "10", "0"),
+ end: new Date("2017", "0", "13", "12", "0"),
+ title: "Workshop out of the country",
+ type: "Type07",
+ pic: "sap-icon://sap-ui5",
+ tentative: false
+ },
+ {
+ start: new Date("2017", "0", "15", "08", "00"),
+ end: new Date("2017", "0", "15", "09", "30"),
+ title: "Meet the plan",
+ info: "Live meeting",
+ type: "Type04",
+ tentative: false
+ },
+ {
+ start: new Date("2017", "0", "15", "10", "0"),
+ end: new Date("2017", "0", "15", "12", "0"),
+ title: "Team meeting",
+ info: "room 1",
+ type: "Type01",
+ pic: "sap-icon://sap-ui5",
+ tentative: false
+ },
+ {
+ start: new Date("2017", "0", "15", "18", "00"),
+ end: new Date("2017", "0", "15", "19", "10"),
+ title: "Discussion of the plan",
+ info: "Online meeting",
+ type: "Type04",
+ tentative: false
+ },
+ {
+ start: new Date("2017", "0", "16", "10", "0"),
+ end: new Date("2017", "0", "31", "12", "0"),
+ title: "Workshop out of the country",
+ type: "Type07",
+ pic: "sap-icon://sap-ui5",
+ tentative: false
+ },
+ {
+ start: new Date("2018", "0", "1", "0", "0"),
+ end: new Date("2018", "2", "31", "23", "59"),
+ title: "New quarter",
+ type: "Type10",
+ tentative: false
+ },
+ {
+ start: new Date("2017", "01", "11", "10", "0"),
+ end: new Date("2017", "02", "20", "12", "0"),
+ title: "Team collaboration",
+ info: "room 1",
+ type: "Type01",
+ pic: "sap-icon://sap-ui5",
+ tentative: false
+ },
+ {
+ start: new Date("2017", "3", "01", "10", "0"),
+ end: new Date("2017", "3", "31", "12", "0"),
+ title: "Workshop out of the country",
+ type: "Type07",
+ pic: "sap-icon://sap-ui5",
+ tentative: false
+ },
+ {
+ start: new Date("2017", "4", "01", "10", "0"),
+ end: new Date("2017", "4", "31", "12", "0"),
+ title: "Out of the office",
+ type: "Type08",
+ tentative: false
+ },
+ {
+ start: new Date("2017", "7", "1", "0", "0"),
+ end: new Date("2017", "7", "31", "23", "59"),
+ title: "Vacation",
+ info: "out of office",
+ type: "Type04",
+ tentative: false
+ }
+ ],
+ headers: [
+ {
+ start: new Date("2017", "0", "15", "9", "0"),
+ end: new Date("2017", "0", "15", "10", "0"),
+ title: "Payment reminder",
+ type: "Type06"
+ },
+ {
+ start: new Date("2017", "0", "15", "16", "30"),
+ end: new Date("2017", "0", "15", "18", "00"),
+ title: "Private appointment",
+ type: "Type06"
+ }
+ ]
+ },
+ {
+ pic: "sap-icon://employee",
+ name: "Max Mustermann",
+ role: "team member",
+ appointments: [
+ {
+ start: new Date("2017", "0", "15", "08", "30"),
+ end: new Date("2017", "0", "15", "09", "30"),
+ title: "Meet John Miller",
+ type: "Type02",
+ tentative: false
+ },
+ {
+ start: new Date("2017", "0", "15", "10", "0"),
+ end: new Date("2017", "0", "15", "12", "0"),
+ title: "Team meeting",
+ info: "room 1",
+ type: "Type01",
+ pic: "sap-icon://sap-ui5",
+ tentative: false
+ },
+ {
+ start: new Date("2017", "0", "15", "13", "00"),
+ end: new Date("2017", "0", "15", "16", "00"),
+ title: "Discussion with clients",
+ info: "online",
+ type: "Type02",
+ tentative: false
+ },
+ {
+ start: new Date("2017", "0", "16", "0", "0"),
+ end: new Date("2017", "0", "16", "23", "59"),
+ title: "Vacation",
+ info: "out of office",
+ type: "Type04",
+ tentative: false
+ },
+ {
+ start: new Date("2017", "0", "17", "1", "0"),
+ end: new Date("2017", "0", "18", "22", "0"),
+ title: "Workshop",
+ info: "regular",
+ type: "Type07",
+ pic: "sap-icon://sap-ui5",
+ tentative: false
+ },
+ {
+ start: new Date("2017", "0", "19", "08", "30"),
+ end: new Date("2017", "0", "19", "18", "30"),
+ title: "Meet John Doe",
+ type: "Type02",
+ tentative: false
+ },
+ {
+ start: new Date("2017", "0", "19", "10", "0"),
+ end: new Date("2017", "0", "19", "16", "0"),
+ title: "Team meeting",
+ info: "room 1",
+ type: "Type01",
+ pic: "sap-icon://sap-ui5",
+ tentative: false
+ },
+ {
+ start: new Date("2017", "0", "19", "07", "00"),
+ end: new Date("2017", "0", "19", "17", "30"),
+ title: "Discussion with clients",
+ type: "Type02",
+ tentative: false
+ },
+ {
+ start: new Date("2017", "0", "20", "0", "0"),
+ end: new Date("2017", "0", "20", "23", "59"),
+ title: "Vacation",
+ info: "out of office",
+ type: "Type04",
+ tentative: false
+ },
+ {
+ start: new Date("2017", "0", "22", "07", "00"),
+ end: new Date("2017", "0", "27", "17", "30"),
+ title: "Discussion with clients",
+ info: "out of office",
+ type: "Type02",
+ tentative: false
+ },
+ {
+ start: new Date("2017", "2", "13", "9", "0"),
+ end: new Date("2017", "2", "17", "10", "0"),
+ title: "Payment week",
+ type: "Type06"
+ },
+ {
+ start: new Date("2017", "03", "10", "0", "0"),
+ end: new Date("2017", "05", "16", "23", "59"),
+ title: "Vacation",
+ info: "out of office",
+ type: "Type04",
+ tentative: false
+ },
+ {
+ start: new Date("2017", "07", "1", "0", "0"),
+ end: new Date("2017", "09", "31", "23", "59"),
+ title: "New quarter",
+ type: "Type10",
+ tentative: false
+ }
+ ],
+ headers: [
+ {
+ start: new Date("2017", "0", "16", "0", "0"),
+ end: new Date("2017", "0", "16", "23", "59"),
+ title: "Private",
+ type: "Type05"
+ }
+ ]
+ }
+ ]
+ })
+ this.getView().setModel(oModel)
+ },
+
+ handleAppointmentSelect: function (oEvent) {
+ var oAppointment = oEvent.getParameter("appointment"),
+ sSelected
+ if (oAppointment) {
+ sSelected = oAppointment.getSelected() ? "selected" : "deselected"
+ MessageBox.show(
+ "'" +
+ oAppointment.getTitle() +
+ "' " +
+ sSelected +
+ ". \n Selected appointments: " +
+ this.byId("PC1").getSelectedAppointments().length
+ )
+ } else {
+ var aAppointments = oEvent.getParameter("appointments")
+ var sValue = aAppointments.length + " Appointments selected"
+ MessageBox.show(sValue)
+ }
+ },
+
+ handleSelectionFinish: function (oEvent) {
+ var aSelectedKeys = oEvent.getSource().getSelectedKeys()
+ this.byId("PC1").setBuiltInViews(aSelectedKeys)
+ }
+ })
+ }
+)
diff --git a/examples/ui5-js-app-esm/webapp/controller/Main.controller.js b/examples/ui5-js-app-esm/webapp/controller/Main.controller.js
new file mode 100644
index 00000000..9d442ed4
--- /dev/null
+++ b/examples/ui5-js-app-esm/webapp/controller/Main.controller.js
@@ -0,0 +1,98 @@
+sap.ui.define(
+ [
+ "test/Sample/controller/BaseController",
+ "sap/m/MessageToast",
+ "sap/ui/model/json/JSONModel",
+ "sap/ui/core/Fragment"
+ ],
+ (Controller, MessageToast, JSONModel, Fragment) => {
+ return Controller.extend("test.Sample.controller.Main", {
+ onInit() {
+ this.getOwnerComponent().getModel().read("/Customers('TRAIH')")
+
+ const jData = {
+ inputValue: "test Input Value !!!",
+ buttonText: "Don't press me !!! -> binded",
+ checkbox: false,
+ barcode: ""
+ }
+ // TODO:
+ // searchValue: "search Value"
+
+ let testModel = new JSONModel(jData)
+ this.getView().setModel(testModel, "testModel")
+
+ this.initCombobox()
+ },
+
+ initCombobox: function () {
+ // set explored app's demo model on this sample
+ var oModel = new JSONModel()
+ oModel.loadData("model/countries.json")
+ this.getView().setModel(oModel, "Countries")
+ },
+
+ navCalendar() {
+ return this.getOwnerComponent().getRouter().navTo("RouteCalendar")
+ },
+
+ navFwd() {
+ return this.getOwnerComponent().getRouter().navTo("RouteOther")
+ },
+
+ onPress(oEvent) {
+ MessageToast.show(`${oEvent.getSource().getId()} pressed`)
+ },
+ onBoo(oEvent) {
+ MessageToast.show(`👻`)
+ },
+ onSearch(oEvent) {
+ this.getView().byId("idSearchResult").setText(oEvent.getSource().getValue())
+ },
+ onTest(oEvent) {
+ this.onBoo(oEvent)
+ },
+ onSelect(oEvent) {
+ const selectedProperty = oEvent.getSource().getProperty("selected")
+ const selectedParameter = oEvent.getParameter("selected")
+ MessageToast.show(`selectedProperty: ${selectedProperty} selectedParameter: ${selectedParameter}`)
+ },
+ scanBarcode(oEvent) {
+ var _self = this
+ cordova.plugins.barcodeScanner.scan(
+ function (result) {
+ // update in model
+ _self.getView().getModel("testModel").setProperty("/barcode", result.scanCode)
+
+ MessageToast.show(
+ "We got a barcode\n" +
+ "Result: " +
+ result.scanCode +
+ "\n" +
+ "Format: " +
+ result.format +
+ "\n" +
+ "Cancelled: " +
+ result.cancelled
+ )
+ },
+ function (error) {
+ MessageToast.show("Scanning failed: " + error)
+ }
+ )
+ },
+
+ async openDialog() {
+ if (!this.dialog) {
+ this.dialog = await Fragment.load({ name: "test.Sample.view.Dialog", controller: this })
+ this.dialog.setModel(this.getView().getModel("i18n"), "i18n")
+ }
+ this.dialog.open()
+ },
+
+ close() {
+ this.dialog.close()
+ }
+ })
+ }
+)
diff --git a/examples/ui5-js-app-esm/webapp/controller/Other.controller.js b/examples/ui5-js-app-esm/webapp/controller/Other.controller.js
new file mode 100644
index 00000000..a109f150
--- /dev/null
+++ b/examples/ui5-js-app-esm/webapp/controller/Other.controller.js
@@ -0,0 +1,27 @@
+sap.ui.define(
+ ["test/Sample/controller/BaseController", "sap/m/MessageToast", "sap/m/StandardListItem"],
+ function (Controller, MessageToast, StandardListItem) {
+ "use strict"
+
+ return Controller.extend("test.Sample.controller.Other", {
+ onInit: function () {},
+
+ onItemPress(oEvent) {
+ this.getView().byId("idTextFieldClickResult").setText(oEvent.getParameter("listItem").data("key"))
+
+ MessageToast.show(oEvent.getParameter("listItem").data("key"))
+ },
+
+ onAddLineItem(oEvent) {
+ this.getView()
+ .byId("PeopleList")
+ .addItem(
+ new StandardListItem({
+ title: "FirstName LastName",
+ type: "Navigation"
+ })
+ )
+ }
+ })
+ }
+)
diff --git a/examples/ui5-js-app-esm/webapp/css/style.css b/examples/ui5-js-app-esm/webapp/css/style.css
new file mode 100644
index 00000000..7d876b94
--- /dev/null
+++ b/examples/ui5-js-app-esm/webapp/css/style.css
@@ -0,0 +1 @@
+/* Enter your custom styles here */
diff --git a/examples/ui5-js-app-esm/webapp/i18n/i18n.properties b/examples/ui5-js-app-esm/webapp/i18n/i18n.properties
new file mode 100644
index 00000000..0817a112
--- /dev/null
+++ b/examples/ui5-js-app-esm/webapp/i18n/i18n.properties
@@ -0,0 +1,22 @@
+appTitle=Sample
+appDescription=App Description
+
+###
+
+startPage.userButton.text=User Test Text
+startPage.navButton.text=to Other view
+startPage.currentUI5.text=most current UI5 version available
+startPage.title.text=UI5 demo
+startPage.text.username=Username
+
+###
+
+otherPage.title=Another View...
+otherPage.listHeader=...bites the dust!
+
+###
+
+dialog.title=Here we are!
+dialog.text=born to be kings
+dialog.close=cut
+
diff --git a/examples/ui5-js-app-esm/webapp/i18n/i18n_en.properties b/examples/ui5-js-app-esm/webapp/i18n/i18n_en.properties
new file mode 100644
index 00000000..49c81d88
--- /dev/null
+++ b/examples/ui5-js-app-esm/webapp/i18n/i18n_en.properties
@@ -0,0 +1,20 @@
+appTitle=Sample
+appDescription=App Description
+
+###
+
+startPage.navButton.text=to Other view
+startPage.currentUI5.text=most current UI5 version available
+startPage.title.text=UI5 demo
+startPage.text.username=Username
+
+###
+
+otherPage.title=Another View...
+otherPage.listHeader=...bites the dust!
+
+###
+
+dialog.title=Here we are!
+dialog.text=born to be kings
+dialog.close=cut
\ No newline at end of file
diff --git a/examples/ui5-js-app-esm/webapp/index.html b/examples/ui5-js-app-esm/webapp/index.html
new file mode 100644
index 00000000..ac141e19
--- /dev/null
+++ b/examples/ui5-js-app-esm/webapp/index.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+ Sample UI5 Application
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/ui5-js-app-esm/webapp/manifest.json b/examples/ui5-js-app-esm/webapp/manifest.json
new file mode 100644
index 00000000..7de344de
--- /dev/null
+++ b/examples/ui5-js-app-esm/webapp/manifest.json
@@ -0,0 +1,141 @@
+{
+ "_version": "1.12.0",
+ "sap.app": {
+ "id": "test.Sample",
+ "type": "application",
+ "i18n": "i18n/i18n.properties",
+ "applicationVersion": {
+ "version": "${version}"
+ },
+ "title": "{{appTitle}}",
+ "description": "{{appDescription}}",
+ "resources": "resources.json",
+ "ach": "ach",
+ "dataSources": {
+ "BackendDataSource": {
+ "uri": "/V2/Northwind/Northwind.svc/",
+ "type": "OData",
+ "settings": {
+ "odataVersion": "2.0"
+ }
+ },
+ "LatestUI5Datasource": {
+ "uri": "",
+ "type": "JSON"
+ }
+ }
+ },
+ "sap.ui": {
+ "technology": "UI5",
+ "icons": {
+ "icon": "",
+ "favIcon": "",
+ "phone": "",
+ "phone@2": "",
+ "tablet": "",
+ "tablet@2": ""
+ },
+ "deviceTypes": {
+ "desktop": true,
+ "tablet": true,
+ "phone": true
+ }
+ },
+ "sap.ui5": {
+ "rootView": {
+ "viewName": "test.Sample.view.App",
+ "type": "XML",
+ "async": true,
+ "id": "app"
+ },
+ "dependencies": {
+ "minUI5Version": "1.68.1",
+ "libs": {
+ "sap.m": {},
+ "sap.ui.core": {},
+ "sap.ui.layout": {}
+ }
+ },
+ "contentDensities": {
+ "compact": true,
+ "cozy": true
+ },
+ "models": {
+ "i18n": {
+ "type": "sap.ui.model.resource.ResourceModel",
+ "settings": {
+ "bundleName": "test.Sample.i18n.i18n"
+ }
+ },
+ "": {
+ "dataSource": "BackendDataSource",
+ "settings": {
+ "useBatch": false,
+ "autoExpandSelect": true,
+ "operationMode": "Server",
+ "groupId": "$direct",
+ "synchronizationMode": "None"
+ }
+ },
+ "LatestUI5": {
+ "type": "sap.ui.model.json.JSONModel",
+ "dataSource": "LatestUI5Datasource"
+ }
+ },
+ "routing": {
+ "config": {
+ "routerClass": "sap.m.routing.Router",
+ "viewType": "XML",
+ "async": true,
+ "viewPath": "test.Sample.view",
+ "controlAggregation": "pages",
+ "controlId": "app"
+ },
+ "routes": [
+ {
+ "name": "RouteMain",
+ "pattern": "",
+ "target": ["TargetMain"]
+ },
+ {
+ "name": "RouteCalendar",
+ "pattern": "calendar",
+ "target": ["TargetCalendar"]
+ },
+ {
+ "name": "RouteMainNamed",
+ "pattern": "main",
+ "target": ["TargetMain"]
+ },
+ {
+ "name": "RouteOther",
+ "pattern": "other",
+ "target": ["TargetOther"]
+ }
+ ],
+ "targets": {
+ "TargetMain": {
+ "viewType": "XML",
+ "transition": "slide",
+ "clearControlAggregation": false,
+ "viewId": "Main",
+ "viewName": "Main"
+ },
+ "TargetOther": {
+ "viewType": "XML",
+ "transition": "slide",
+ "clearControlAggregation": false,
+ "viewId": "Other",
+ "viewName": "Other"
+ },
+ "TargetCalendar": {
+ "viewType": "XML",
+ "transition": "slide",
+ "clearControlAggregation": false,
+ "viewId": "Calendar",
+ "viewName": "Calendar"
+ }
+ }
+ }
+ }
+}
diff --git a/examples/ui5-js-app-esm/webapp/model/countries.json b/examples/ui5-js-app-esm/webapp/model/countries.json
new file mode 100644
index 00000000..e1741b7c
--- /dev/null
+++ b/examples/ui5-js-app-esm/webapp/model/countries.json
@@ -0,0 +1,36 @@
+{
+ "CountriesCollection": [
+ {
+ "key": "DZ",
+ "text": "Algeria"
+ },
+ {
+ "key": "AR",
+ "text": "Argentina"
+ },
+ {
+ "key": "AU",
+ "text": "Australia"
+ },
+ {
+ "key": "AT",
+ "text": "Austria"
+ },
+ {
+ "key": "BH",
+ "text": "Bahrain"
+ },
+ {
+ "key": "BE",
+ "text": "Belgium"
+ },
+ {
+ "key": "BA",
+ "text": "Bosnia and Herzegovina"
+ },
+ {
+ "key": "BR",
+ "text": "Brazil"
+ }
+ ]
+}
diff --git a/examples/ui5-js-app-esm/webapp/model/models.js b/examples/ui5-js-app-esm/webapp/model/models.js
new file mode 100644
index 00000000..cf0fa502
--- /dev/null
+++ b/examples/ui5-js-app-esm/webapp/model/models.js
@@ -0,0 +1,11 @@
+sap.ui.define(["sap/ui/model/json/JSONModel", "sap/ui/Device"], function (JSONModel, Device) {
+ "use strict"
+
+ return {
+ createDeviceModel: function () {
+ var oModel = new JSONModel(Device)
+ oModel.setDefaultBindingMode("OneWay")
+ return oModel
+ }
+ }
+})
diff --git a/examples/ui5-js-app-esm/webapp/proxyrc.json b/examples/ui5-js-app-esm/webapp/proxyrc.json
new file mode 100644
index 00000000..82ef5867
--- /dev/null
+++ b/examples/ui5-js-app-esm/webapp/proxyrc.json
@@ -0,0 +1,7 @@
+{
+ "/V2/": {
+ "target": "https://services.odata.org/V2/",
+ "secure": false,
+ "changeOrigin": true
+ }
+}
diff --git a/examples/ui5-js-app-esm/webapp/test/e2e/esm.test.js b/examples/ui5-js-app-esm/webapp/test/e2e/esm.test.js
new file mode 100644
index 00000000..39153b9e
--- /dev/null
+++ b/examples/ui5-js-app-esm/webapp/test/e2e/esm.test.js
@@ -0,0 +1,30 @@
+import { wdi5 } from "wdio-ui5-service"
+import * as sinon from "sinon"
+
+describe("ui5 basic", () => {
+ it("should use the ESM style logger", () => {
+ const logSpy = sinon.spy(console, "log")
+ const Logger = wdi5.getLogger("esm!")
+ Logger.log("Hello ESM World!")
+ expect(logSpy.getCall(0).args[1]).toContain("esm!")
+ logSpy.restore()
+ })
+
+ it("window should have the right title", async () => {
+ const title = await browser.getTitle()
+ expect(title).toEqual("Sample UI5 Application")
+ })
+
+ it("wdi5 should use a control selector with dots and colons", async () => {
+ const selector = {
+ selector: {
+ id: "Title::NoAction.h1",
+ viewName: "test.Sample.view.Main"
+ }
+ }
+ const text = await /** @type {import("wdio-ui5-service/esm/lib/wdi5-control.js").WDI5Control} */ (
+ await browser.asControl(selector)
+ ).getText()
+ expect(text).toEqual("UI5 demo")
+ })
+})
diff --git a/examples/ui5-js-app-esm/webapp/test/e2e/wdio.conf.js b/examples/ui5-js-app-esm/webapp/test/e2e/wdio.conf.js
new file mode 100644
index 00000000..7ebe4841
--- /dev/null
+++ b/examples/ui5-js-app-esm/webapp/test/e2e/wdio.conf.js
@@ -0,0 +1,27 @@
+export const config = {
+ wdi5: {
+ logLevel: "verbose"
+ },
+ baseUrl: "http://localhost:8082/index.html",
+
+ services: ["ui5"],
+ specs: ["./**/*.test.js"],
+ maxInstances: 1,
+ capabilities: [
+ {
+ maxInstances: 1,
+ browserName: "chrome",
+ "goog:chromeOptions": {
+ args:
+ process.argv.indexOf("--headless") > -1
+ ? ["window-size=1440,800", "--headless"]
+ : ["window-size=1440,800"]
+ }
+ }
+ ],
+ logLevel: "error",
+
+ reporters: ["spec"],
+
+ framework: "mocha"
+}
diff --git a/examples/ui5-js-app-esm/webapp/view/App.view.xml b/examples/ui5-js-app-esm/webapp/view/App.view.xml
new file mode 100644
index 00000000..2814732b
--- /dev/null
+++ b/examples/ui5-js-app-esm/webapp/view/App.view.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/examples/ui5-js-app-esm/webapp/view/Calendar.view.xml b/examples/ui5-js-app-esm/webapp/view/Calendar.view.xml
new file mode 100644
index 00000000..0388c4a3
--- /dev/null
+++ b/examples/ui5-js-app-esm/webapp/view/Calendar.view.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/ui5-js-app-esm/webapp/view/Dialog.fragment.xml b/examples/ui5-js-app-esm/webapp/view/Dialog.fragment.xml
new file mode 100644
index 00000000..3eaf4820
--- /dev/null
+++ b/examples/ui5-js-app-esm/webapp/view/Dialog.fragment.xml
@@ -0,0 +1,15 @@
+
+
+
\ No newline at end of file
diff --git a/examples/ui5-js-app-esm/webapp/view/Main.view.xml b/examples/ui5-js-app-esm/webapp/view/Main.view.xml
new file mode 100644
index 00000000..1210ff60
--- /dev/null
+++ b/examples/ui5-js-app-esm/webapp/view/Main.view.xml
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/ui5-js-app-esm/webapp/view/Other.view.xml b/examples/ui5-js-app-esm/webapp/view/Other.view.xml
new file mode 100644
index 00000000..1592fcdf
--- /dev/null
+++ b/examples/ui5-js-app-esm/webapp/view/Other.view.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/ui5-js-app/webapp/test/e2e/basic.test.js b/examples/ui5-js-app/webapp/test/e2e/basic.test.js
index 97ffeb57..968d7562 100644
--- a/examples/ui5-js-app/webapp/test/e2e/basic.test.js
+++ b/examples/ui5-js-app/webapp/test/e2e/basic.test.js
@@ -34,8 +34,9 @@ describe("ui5 basic", () => {
}
}
- // ui5
- const titleWUi5 = await browser.asControl(selector).getText()
+ const titleWUi5 = await /** @type {import("wdio-ui5-service/cjs/lib/wdi5-control.js").WDI5Control} */ (
+ await browser.asControl(selector)
+ ).getText()
expect(titleWUi5).toEqual("UI5 demo")
})
diff --git a/examples/ui5-ts-app/test/e2e/workzone/regular-journey.test.ts b/examples/ui5-ts-app/test/e2e/workzone/regular-journey.test.ts
index 9777cb41..774a478a 100644
--- a/examples/ui5-ts-app/test/e2e/workzone/regular-journey.test.ts
+++ b/examples/ui5-ts-app/test/e2e/workzone/regular-journey.test.ts
@@ -1,6 +1,33 @@
-/* eslint-disable @typescript-eslint/no-empty-function */
-describe.skip("drive in Work Zone with standard wdi5/wdio APIs", () => {
- it("should see the List Report page", async () => {})
+import { wdi5 } from "wdio-ui5-service"
+describe("drive in Work Zone with standard wdi5/wdio APIs", () => {
+ it("should click the avatar button in the workzone shell", async () => {
+ await wdi5.toWorkZoneShell()
+ await browser
+ .asControl({
+ selector: {
+ id: "userActionsMenuHeaderButton"
+ }
+ })
+ .press()
+ const popover = await browser.asControl({
+ selector: {
+ id: "sapUshellUserActionsMenuPopover",
+ controlType: "sap.m.Popover",
+ interaction: "root"
+ }
+ })
- it("should see the Object Pages load and then returns to list", async () => {})
+ expect(await popover.isOpen()).toBeTruthy()
+ })
+
+ it("should find the table in the travel app", async () => {
+ await wdi5.toWorkZoneApp()
+ const table = await browser.asControl({
+ selector: {
+ id: "sap.fe.cap.travel::TravelList--fe::table::Travel::LineItem"
+ }
+ })
+ const actions = await table.getActions(true)
+ expect(actions.length).toBeGreaterThanOrEqual(1)
+ })
})
diff --git a/examples/ui5-ts-app/test/e2e/workzone/wdio-ui5-workzone.conf.ts b/examples/ui5-ts-app/test/e2e/workzone/wdio-ui5-workzone.conf.ts
index d7260910..5fe25008 100644
--- a/examples/ui5-ts-app/test/e2e/workzone/wdio-ui5-workzone.conf.ts
+++ b/examples/ui5-ts-app/test/e2e/workzone/wdio-ui5-workzone.conf.ts
@@ -7,7 +7,8 @@ process.env.wdi5_password = process.env.wdi5_wz_password
export const config: wdi5Config = {
wdi5: {
btpWorkZoneEnablement: true,
- logLevel: "verbose"
+ logLevel: "verbose",
+ waitForUI5Timeout: 25000
},
baseUrl: "https://cswdev.launchpad.cfapps.eu10.hana.ondemand.com/site/csw#travel-process",
diff --git a/package-lock.json b/package-lock.json
index e26d8ed1..80cb3e01 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -12,47 +12,48 @@
".",
"examples/fe-app",
"examples/ui5-js-app",
+ "examples/ui5-js-app-esm",
"examples/ui5-ts-app",
"examples/cucumber",
"examples/cap-bookshop-wdi5"
],
"dependencies": {
- "devtools": "^8.15.6",
+ "devtools": "^8.16.3",
"dotenv": "^16.3.1",
"semver": "^7.5.4"
},
"devDependencies": {
"@commitlint/cli": "^17.7.1",
"@commitlint/config-conventional": "^17.7.0",
- "@sap/approuter": "14.3.0",
+ "@sap/approuter": "14.3.1",
"@sap/ux-ui5-fe-mockserver-middleware": "^1.6.5",
"@types/openui5": "^1.117.0",
"@types/sinon": "^10.0.16",
- "@typescript-eslint/eslint-plugin": "^6.4.1",
- "@typescript-eslint/parser": "^6.4.1",
+ "@typescript-eslint/eslint-plugin": "^6.6.0",
+ "@typescript-eslint/parser": "^6.6.0",
"@ui5/cli": "^3",
"@wdio/sauce-service": "^8",
"cross-env": "^7.0.3",
"deepmerge": "^4.3.1",
"docsify-cli": "4.4.4",
- "eslint": "^8.47.0",
+ "eslint": "^8.48.0",
"eslint-config-prettier": "^9.0.0",
"eslint-plugin-prettier": "^5.0.0",
"fs-extra": "^11.1.1",
"husky": "^8.0.3",
"lint-staged": "^14.0.1",
"marky": "^1.2.5",
- "mbt": "^1.2.24",
+ "mbt": "^1.2.25",
"mocha": "^10.2.0",
"npm-run-all": "^4.1.5",
- "prettier": "^3.0.2",
+ "prettier": "^3.0.3",
"replace-in-file": "^7.0.1",
"rimraf": "^5.0.1",
"sinon": "^15.2.0",
"soerver": "^0.0.3",
"standard-version": "^9.5.0",
"ts-node": "^10.9.1",
- "typescript": "^5.1.6",
+ "typescript": "^5.2.2",
"wait-on": "^7.0.1"
},
"engines": {
@@ -156,6 +157,25 @@
"wdio-ui5-service": "*"
}
},
+ "examples/ui5-js-app-esm": {
+ "name": "ui5-app-esm",
+ "version": "0.8.15-notimportant",
+ "license": "UNLICENSED",
+ "dependencies": {
+ "@wdio/sauce-service": "^8"
+ },
+ "devDependencies": {
+ "@types/sinon": "^10.0.16",
+ "@ui5/cli": "^3",
+ "@wdio/cli": "^8",
+ "@wdio/local-runner": "^8",
+ "@wdio/mocha-framework": "^8",
+ "@wdio/spec-reporter": "^8",
+ "sinon": "^15.2.0",
+ "ui5-middleware-simpleproxy": "latest",
+ "wdio-ui5-service": "*"
+ }
+ },
"examples/ui5-ts-app": {
"version": "0.8.15-notimportant",
"license": "Apache-2.0",
@@ -4057,73 +4077,6 @@
"xml-js": "1.6.11"
}
},
- "node_modules/@sap-ux/fe-fpm-writer": {
- "version": "0.23.0",
- "resolved": "https://registry.npmjs.org/@sap-ux/fe-fpm-writer/-/fe-fpm-writer-0.23.0.tgz",
- "integrity": "sha512-zVs48ufHW3bKbHqRir4RNB2XxQzvJSyEjpUqUQNloEPM291kJPiLkRQdloFA6P+pJ+VGZo/uJF284RQCNtrVOA==",
- "dev": true,
- "dependencies": {
- "@xmldom/xmldom": "0.8.6",
- "ejs": "3.1.7",
- "mem-fs": "2.1.0",
- "mem-fs-editor": "9.4.0",
- "semver": "7.5.3",
- "xml-formatter": "2.6.1",
- "xpath": "0.0.32"
- },
- "engines": {
- "node": ">= 14.16.0 < 15.0.0 || >=16.1.0 < 17.0.0 || >=18.0.0 < 19.0.0",
- "pnpm": ">=6.26.1 < 7.0.0 || >=7.1.0"
- }
- },
- "node_modules/@sap-ux/fe-fpm-writer/node_modules/ejs": {
- "version": "3.1.7",
- "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.7.tgz",
- "integrity": "sha512-BIar7R6abbUxDA3bfXrO4DSgwo8I+fB5/1zgujl3HLLjwd6+9iOnrT+t3grn2qbk9vOgBubXOFwX2m9axoFaGw==",
- "dev": true,
- "dependencies": {
- "jake": "^10.8.5"
- },
- "bin": {
- "ejs": "bin/cli.js"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@sap-ux/fe-fpm-writer/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@sap-ux/fe-fpm-writer/node_modules/semver": {
- "version": "7.5.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz",
- "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@sap-ux/fe-fpm-writer/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
"node_modules/@sap-ux/fe-mockserver-core": {
"version": "1.1.117",
"resolved": "https://registry.npmjs.org/@sap-ux/fe-mockserver-core/-/fe-mockserver-core-1.1.117.tgz",
@@ -4252,9 +4205,9 @@
}
},
"node_modules/@sap/approuter": {
- "version": "14.3.0",
- "resolved": "https://registry.npmjs.org/@sap/approuter/-/approuter-14.3.0.tgz",
- "integrity": "sha512-W2atSrNCaMJU0fT3hKULGkgkdbwaAMugzQy4ggtu1p0drVz4eWEMm6tYfqhAgljwK2qfzWHHIWq/Tj4Blyc1VQ==",
+ "version": "14.3.1",
+ "resolved": "https://registry.npmjs.org/@sap/approuter/-/approuter-14.3.1.tgz",
+ "integrity": "sha512-Ax9U8MmF0guUgzZQrZ16iJZJqmy/e2EhXVQ3+7IS3ol9SXmNk7L60hgh8llxo7yd373VndAxrRWegnjER9a/3w==",
"dev": true,
"dependencies": {
"@sap/audit-logging": "5.6.3",
@@ -8060,6 +8013,7 @@
"version": "1.17.11",
"resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz",
"integrity": "sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==",
+ "dev": true,
"dependencies": {
"@types/node": "*"
}
@@ -8114,12 +8068,6 @@
"integrity": "sha512-trNJ/vtMZYMLhfN45uLq4ShQSw0/S7xCTLLVM+WM1rmFpba/VS42jVUgaO3w/NOLiWR/09lnYk0yMaA/atdIsg==",
"dev": true
},
- "node_modules/@types/minimatch": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz",
- "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==",
- "dev": true
- },
"node_modules/@types/minimist": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz",
@@ -15662,7 +15610,7 @@
"url": "https://github.com/sindresorhus/execa?sponsor=1"
}
},
- "node_modules/@wdio/cli/node_modules/execa/node_modules/get-stream": {
+ "node_modules/@wdio/cli/node_modules/get-stream": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz",
"integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==",
@@ -15673,30 +15621,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@wdio/cli/node_modules/got": {
- "version": "13.0.0",
- "resolved": "https://registry.npmjs.org/got/-/got-13.0.0.tgz",
- "integrity": "sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==",
- "dependencies": {
- "@sindresorhus/is": "^5.2.0",
- "@szmarczak/http-timer": "^5.0.1",
- "cacheable-lookup": "^7.0.0",
- "cacheable-request": "^10.2.8",
- "decompress-response": "^6.0.0",
- "form-data-encoder": "^2.1.2",
- "get-stream": "^6.0.1",
- "http2-wrapper": "^2.1.10",
- "lowercase-keys": "^3.0.0",
- "p-cancelable": "^3.0.0",
- "responselike": "^3.0.0"
- },
- "engines": {
- "node": ">=16"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/got?sponsor=1"
- }
- },
"node_modules/@wdio/cli/node_modules/human-signals": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz",
@@ -15705,17 +15629,6 @@
"node": ">=16.17.0"
}
},
- "node_modules/@wdio/cli/node_modules/is-plain-obj": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
- "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/@wdio/cli/node_modules/is-stream": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
@@ -15807,113 +15720,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@wdio/cli/node_modules/puppeteer-core": {
- "version": "20.9.0",
- "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-20.9.0.tgz",
- "integrity": "sha512-H9fYZQzMTRrkboEfPmf7m3CLDN6JvbxXA3qTtS+dFt27tR+CsFHzPsT6pzp6lYL6bJbAPaR0HaPO6uSi+F94Pg==",
- "dependencies": {
- "@puppeteer/browsers": "1.4.6",
- "chromium-bidi": "0.4.16",
- "cross-fetch": "4.0.0",
- "debug": "4.3.4",
- "devtools-protocol": "0.0.1147663",
- "ws": "8.13.0"
- },
- "engines": {
- "node": ">=16.3.0"
- },
- "peerDependencies": {
- "typescript": ">= 4.7.4"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@wdio/cli/node_modules/puppeteer-core/node_modules/@puppeteer/browsers": {
- "version": "1.4.6",
- "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.4.6.tgz",
- "integrity": "sha512-x4BEjr2SjOPowNeiguzjozQbsc6h437ovD/wu+JpaenxVLm3jkgzHY2xOslMTp50HoTvQreMjiexiGQw1sqZlQ==",
- "dependencies": {
- "debug": "4.3.4",
- "extract-zip": "2.0.1",
- "progress": "2.0.3",
- "proxy-agent": "6.3.0",
- "tar-fs": "3.0.4",
- "unbzip2-stream": "1.4.3",
- "yargs": "17.7.1"
- },
- "bin": {
- "browsers": "lib/cjs/main-cli.js"
- },
- "engines": {
- "node": ">=16.3.0"
- },
- "peerDependencies": {
- "typescript": ">= 4.7.4"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@wdio/cli/node_modules/puppeteer-core/node_modules/devtools-protocol": {
- "version": "0.0.1147663",
- "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1147663.tgz",
- "integrity": "sha512-hyWmRrexdhbZ1tcJUGpO95ivbRhWXz++F4Ko+n21AY5PNln2ovoJw+8ZMNDTtip+CNFQfrtLVh/w4009dXO/eQ=="
- },
- "node_modules/@wdio/cli/node_modules/puppeteer-core/node_modules/ws": {
- "version": "8.13.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz",
- "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==",
- "engines": {
- "node": ">=10.0.0"
- },
- "peerDependencies": {
- "bufferutil": "^4.0.1",
- "utf-8-validate": ">=5.0.2"
- },
- "peerDependenciesMeta": {
- "bufferutil": {
- "optional": true
- },
- "utf-8-validate": {
- "optional": true
- }
- }
- },
- "node_modules/@wdio/cli/node_modules/puppeteer-core/node_modules/yargs": {
- "version": "17.7.1",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz",
- "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==",
- "dependencies": {
- "cliui": "^8.0.1",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.3",
- "y18n": "^5.0.5",
- "yargs-parser": "^21.1.1"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@wdio/cli/node_modules/readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
"node_modules/@wdio/cli/node_modules/signal-exit": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
@@ -16033,1232 +15839,7 @@
}
}
},
- "node_modules/@wdio/cli/node_modules/ws": {
- "version": "8.14.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.0.tgz",
- "integrity": "sha512-WR0RJE9Ehsio6U4TuM+LmunEsjQ5ncHlw4sn9ihD6RoJKZrVyH9FWV3dmnwu8B2aNib1OvG2X6adUCyFpQyWcg==",
- "engines": {
- "node": ">=10.0.0"
- },
- "peerDependencies": {
- "bufferutil": "^4.0.1",
- "utf-8-validate": ">=5.0.2"
- },
- "peerDependenciesMeta": {
- "bufferutil": {
- "optional": true
- },
- "utf-8-validate": {
- "optional": true
- }
- }
- },
- "node_modules/@wdio/cli/node_modules/yargs-parser": {
- "version": "21.1.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
- "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@wdio/cli/node_modules/zip-stream": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-5.0.1.tgz",
- "integrity": "sha512-UfZ0oa0C8LI58wJ+moL46BDIMgCQbnsb+2PoiJYtonhBsMh2bq1eRBVkvjfVsqbEHd9/EgKPUuL9saSSsec8OA==",
- "dependencies": {
- "archiver-utils": "^4.0.1",
- "compress-commons": "^5.0.1",
- "readable-stream": "^3.6.0"
- },
- "engines": {
- "node": ">= 12.0.0"
- }
- },
- "node_modules/@wdio/config": {
- "version": "8.16.3",
- "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.16.3.tgz",
- "integrity": "sha512-jSiv+lG/hHmVz933oXw+7rI51wGQSsxpxZTOjSylrQz6pngUrB/RxApPSX4VLPZfKxkucxHQ4PO5nuJ8satusg==",
- "dependencies": {
- "@wdio/logger": "8.11.0",
- "@wdio/types": "8.16.3",
- "@wdio/utils": "8.16.3",
- "decamelize": "^6.0.0",
- "deepmerge-ts": "^5.0.0",
- "glob": "^10.2.2",
- "import-meta-resolve": "^3.0.0",
- "read-pkg-up": "^10.0.0"
- },
- "engines": {
- "node": "^16.13 || >=18"
- }
- },
- "node_modules/@wdio/cucumber-framework": {
- "version": "8.16.4",
- "resolved": "https://registry.npmjs.org/@wdio/cucumber-framework/-/cucumber-framework-8.16.4.tgz",
- "integrity": "sha512-7Xi8GqvOq/CC/iKpkLxGTxfm6hUWxkXHLql9vKefqvzgL85QJhy2/zOOia3m0OgV3tQJ3ZzlwteYgw7+fpFoAg==",
- "dev": true,
- "dependencies": {
- "@cucumber/cucumber": "9.4.0",
- "@cucumber/gherkin": "26.2.0",
- "@cucumber/messages": "22.0.0",
- "@cucumber/tag-expressions": "5.0.6",
- "@types/node": "^20.1.0",
- "@wdio/logger": "8.11.0",
- "@wdio/types": "8.16.3",
- "@wdio/utils": "8.16.3",
- "glob": "^10.2.2",
- "is-glob": "^4.0.0"
- },
- "engines": {
- "node": "^16.13 || >=18"
- }
- },
- "node_modules/@wdio/globals": {
- "version": "8.16.4",
- "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-8.16.4.tgz",
- "integrity": "sha512-Ia+59jZ+ZonrdZk/Vk98m7AEHZWUZBoJtRwOx5IPXeWCSdi+Sz2+lQzEzSGWJv+iYxsI7qI5Lyv66Th4e5SiLg==",
- "engines": {
- "node": "^16.13 || >=18"
- },
- "optionalDependencies": {
- "expect-webdriverio": "^4.2.5",
- "webdriverio": "8.16.4"
- }
- },
- "node_modules/@wdio/globals/node_modules/@wdio/config": {
- "version": "8.16.3",
- "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.16.3.tgz",
- "integrity": "sha512-jSiv+lG/hHmVz933oXw+7rI51wGQSsxpxZTOjSylrQz6pngUrB/RxApPSX4VLPZfKxkucxHQ4PO5nuJ8satusg==",
- "optional": true,
- "peer": true,
- "dependencies": {
- "@wdio/logger": "8.11.0",
- "@wdio/types": "8.16.3",
- "@wdio/utils": "8.16.3",
- "decamelize": "^6.0.0",
- "deepmerge-ts": "^5.0.0",
- "glob": "^10.2.2",
- "import-meta-resolve": "^3.0.0",
- "read-pkg-up": "^10.0.0"
- },
- "engines": {
- "node": "^16.13 || >=18"
- }
- },
- "node_modules/@wdio/globals/node_modules/@wdio/types": {
- "version": "8.16.3",
- "resolved": "https://registry.npmjs.org/@wdio/types/-/types-8.16.3.tgz",
- "integrity": "sha512-cH6eKNKkx5ZVJxf7omwtqt88N/mI8Hn2qnXe4DHIYNC4wSDFPhSsuurRhH7s7fnk3biLEQfinuc3cxV0HefSVw==",
- "optional": true,
- "peer": true,
- "dependencies": {
- "@types/node": "^20.1.0"
- },
- "engines": {
- "node": "^16.13 || >=18"
- }
- },
- "node_modules/@wdio/globals/node_modules/@wdio/utils": {
- "version": "8.16.3",
- "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.16.3.tgz",
- "integrity": "sha512-bX/sYOM+tI4hjMIcvSdL522c2xwkas6pII6AUhuBT2UIUkJnp7+OHijJ1l5kHAzRewCdcL3W4dm9exPH2URU+Q==",
- "optional": true,
- "peer": true,
- "dependencies": {
- "@puppeteer/browsers": "^1.6.0",
- "@wdio/logger": "8.11.0",
- "@wdio/types": "8.16.3",
- "decamelize": "^6.0.0",
- "deepmerge-ts": "^5.1.0",
- "edgedriver": "^5.3.5",
- "geckodriver": "^4.2.0",
- "get-port": "^7.0.0",
- "got": "^13.0.0",
- "import-meta-resolve": "^3.0.0",
- "locate-app": "^2.1.0",
- "safaridriver": "^0.1.0",
- "wait-port": "^1.0.4"
- },
- "engines": {
- "node": "^16.13 || >=18"
- }
- },
- "node_modules/@wdio/globals/node_modules/@wdio/utils/node_modules/got": {
- "version": "13.0.0",
- "resolved": "https://registry.npmjs.org/got/-/got-13.0.0.tgz",
- "integrity": "sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==",
- "optional": true,
- "peer": true,
- "dependencies": {
- "@sindresorhus/is": "^5.2.0",
- "@szmarczak/http-timer": "^5.0.1",
- "cacheable-lookup": "^7.0.0",
- "cacheable-request": "^10.2.8",
- "decompress-response": "^6.0.0",
- "form-data-encoder": "^2.1.2",
- "get-stream": "^6.0.1",
- "http2-wrapper": "^2.1.10",
- "lowercase-keys": "^3.0.0",
- "p-cancelable": "^3.0.0",
- "responselike": "^3.0.0"
- },
- "engines": {
- "node": ">=16"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/got?sponsor=1"
- }
- },
- "node_modules/@wdio/globals/node_modules/archiver": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/archiver/-/archiver-6.0.1.tgz",
- "integrity": "sha512-CXGy4poOLBKptiZH//VlWdFuUC1RESbdZjGjILwBuZ73P7WkAUN0htfSfBq/7k6FRFlpu7bg4JOkj1vU9G6jcQ==",
- "optional": true,
- "peer": true,
- "dependencies": {
- "archiver-utils": "^4.0.1",
- "async": "^3.2.4",
- "buffer-crc32": "^0.2.1",
- "readable-stream": "^3.6.0",
- "readdir-glob": "^1.1.2",
- "tar-stream": "^3.0.0",
- "zip-stream": "^5.0.1"
- },
- "engines": {
- "node": ">= 12.0.0"
- }
- },
- "node_modules/@wdio/globals/node_modules/archiver-utils": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-4.0.1.tgz",
- "integrity": "sha512-Q4Q99idbvzmgCTEAAhi32BkOyq8iVI5EwdO0PmBDSGIzzjYNdcFn7Q7k3OzbLy4kLUPXfJtG6fO2RjftXbobBg==",
- "optional": true,
- "peer": true,
- "dependencies": {
- "glob": "^8.0.0",
- "graceful-fs": "^4.2.0",
- "lazystream": "^1.0.0",
- "lodash": "^4.17.15",
- "normalize-path": "^3.0.0",
- "readable-stream": "^3.6.0"
- },
- "engines": {
- "node": ">= 12.0.0"
- }
- },
- "node_modules/@wdio/globals/node_modules/archiver-utils/node_modules/glob": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
- "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
- "optional": true,
- "peer": true,
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^5.0.1",
- "once": "^1.3.0"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/@wdio/globals/node_modules/archiver-utils/node_modules/minimatch": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
- "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
- "optional": true,
- "peer": true,
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@wdio/globals/node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "optional": true,
- "peer": true,
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/@wdio/globals/node_modules/chromium-bidi": {
- "version": "0.4.16",
- "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.16.tgz",
- "integrity": "sha512-7ZbXdWERxRxSwo3txsBjjmc/NLxqb1Bk30mRb0BMS4YIaiV6zvKZqL/UAH+DdqcDYayDWk2n/y8klkBDODrPvA==",
- "optional": true,
- "peer": true,
- "dependencies": {
- "mitt": "3.0.0"
- },
- "peerDependencies": {
- "devtools-protocol": "*"
- }
- },
- "node_modules/@wdio/globals/node_modules/compress-commons": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-5.0.1.tgz",
- "integrity": "sha512-MPh//1cERdLtqwO3pOFLeXtpuai0Y2WCd5AhtKxznqM7WtaMYaOEMSgn45d9D10sIHSfIKE603HlOp8OPGrvag==",
- "optional": true,
- "peer": true,
- "dependencies": {
- "crc-32": "^1.2.0",
- "crc32-stream": "^5.0.0",
- "normalize-path": "^3.0.0",
- "readable-stream": "^3.6.0"
- },
- "engines": {
- "node": ">= 12.0.0"
- }
- },
- "node_modules/@wdio/globals/node_modules/crc32-stream": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-5.0.0.tgz",
- "integrity": "sha512-B0EPa1UK+qnpBZpG+7FgPCu0J2ETLpXq09o9BkLkEAhdB6Z61Qo4pJ3JYu0c+Qi+/SAL7QThqnzS06pmSSyZaw==",
- "optional": true,
- "peer": true,
- "dependencies": {
- "crc-32": "^1.2.0",
- "readable-stream": "^3.4.0"
- },
- "engines": {
- "node": ">= 12.0.0"
- }
- },
- "node_modules/@wdio/globals/node_modules/cross-fetch": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz",
- "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==",
- "optional": true,
- "peer": true,
- "dependencies": {
- "node-fetch": "^2.6.12"
- }
- },
- "node_modules/@wdio/globals/node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "optional": true,
- "peer": true,
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/@wdio/globals/node_modules/devtools-protocol": {
- "version": "0.0.1188743",
- "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1188743.tgz",
- "integrity": "sha512-FZDQC58vLiGR2mjSgsMzU8aEJieovMonIyxf38b775eYdIfAYgSzyAWnDf0Eq6ouF/L9qcbqR8jcQeIC34jp/w==",
- "optional": true,
- "peer": true
- },
- "node_modules/@wdio/globals/node_modules/is-plain-obj": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
- "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
- "optional": true,
- "peer": true,
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@wdio/globals/node_modules/ky": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/ky/-/ky-1.0.1.tgz",
- "integrity": "sha512-UvcwpQO0LOuZwG0Ti3VDo6w57KYt+r4bWEYlNaMt82hgyFtse86QtOGum1RzsZni31FndXQl6NvtDArfunt2JQ==",
- "optional": true,
- "peer": true,
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/ky?sponsor=1"
- }
- },
- "node_modules/@wdio/globals/node_modules/minimatch": {
- "version": "9.0.3",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
- "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
- "optional": true,
- "peer": true,
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/@wdio/globals/node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "optional": true,
- "peer": true
- },
- "node_modules/@wdio/globals/node_modules/puppeteer-core": {
- "version": "20.9.0",
- "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-20.9.0.tgz",
- "integrity": "sha512-H9fYZQzMTRrkboEfPmf7m3CLDN6JvbxXA3qTtS+dFt27tR+CsFHzPsT6pzp6lYL6bJbAPaR0HaPO6uSi+F94Pg==",
- "optional": true,
- "peer": true,
- "dependencies": {
- "@puppeteer/browsers": "1.4.6",
- "chromium-bidi": "0.4.16",
- "cross-fetch": "4.0.0",
- "debug": "4.3.4",
- "devtools-protocol": "0.0.1147663",
- "ws": "8.13.0"
- },
- "engines": {
- "node": ">=16.3.0"
- },
- "peerDependencies": {
- "typescript": ">= 4.7.4"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@wdio/globals/node_modules/puppeteer-core/node_modules/@puppeteer/browsers": {
- "version": "1.4.6",
- "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.4.6.tgz",
- "integrity": "sha512-x4BEjr2SjOPowNeiguzjozQbsc6h437ovD/wu+JpaenxVLm3jkgzHY2xOslMTp50HoTvQreMjiexiGQw1sqZlQ==",
- "optional": true,
- "peer": true,
- "dependencies": {
- "debug": "4.3.4",
- "extract-zip": "2.0.1",
- "progress": "2.0.3",
- "proxy-agent": "6.3.0",
- "tar-fs": "3.0.4",
- "unbzip2-stream": "1.4.3",
- "yargs": "17.7.1"
- },
- "bin": {
- "browsers": "lib/cjs/main-cli.js"
- },
- "engines": {
- "node": ">=16.3.0"
- },
- "peerDependencies": {
- "typescript": ">= 4.7.4"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@wdio/globals/node_modules/puppeteer-core/node_modules/devtools-protocol": {
- "version": "0.0.1147663",
- "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1147663.tgz",
- "integrity": "sha512-hyWmRrexdhbZ1tcJUGpO95ivbRhWXz++F4Ko+n21AY5PNln2ovoJw+8ZMNDTtip+CNFQfrtLVh/w4009dXO/eQ==",
- "optional": true,
- "peer": true
- },
- "node_modules/@wdio/globals/node_modules/puppeteer-core/node_modules/ws": {
- "version": "8.13.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz",
- "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==",
- "optional": true,
- "peer": true,
- "engines": {
- "node": ">=10.0.0"
- },
- "peerDependencies": {
- "bufferutil": "^4.0.1",
- "utf-8-validate": ">=5.0.2"
- },
- "peerDependenciesMeta": {
- "bufferutil": {
- "optional": true
- },
- "utf-8-validate": {
- "optional": true
- }
- }
- },
- "node_modules/@wdio/globals/node_modules/readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
- "optional": true,
- "peer": true,
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/@wdio/globals/node_modules/tar-stream": {
- "version": "3.1.6",
- "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz",
- "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==",
- "optional": true,
- "peer": true,
- "dependencies": {
- "b4a": "^1.6.4",
- "fast-fifo": "^1.2.0",
- "streamx": "^2.15.0"
- }
- },
- "node_modules/@wdio/globals/node_modules/webdriver": {
- "version": "8.16.4",
- "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.16.4.tgz",
- "integrity": "sha512-iL8yt6JrH6GqWCMyyZ8/4UMH1Pkez0VCYtkF5Fwwy6gLbP7q4iOVIFjKXP6Cg5gA2aoJvf9TLZ4cFbGOvsZXCw==",
- "optional": true,
- "peer": true,
- "dependencies": {
- "@types/node": "^20.1.0",
- "@types/ws": "^8.5.3",
- "@wdio/config": "8.16.3",
- "@wdio/logger": "8.11.0",
- "@wdio/protocols": "8.14.6",
- "@wdio/types": "8.16.3",
- "@wdio/utils": "8.16.3",
- "deepmerge-ts": "^5.1.0",
- "got": "^ 12.6.1",
- "ky": "^1.0.0",
- "ws": "^8.8.0"
- },
- "engines": {
- "node": "^16.13 || >=18"
- }
- },
- "node_modules/@wdio/globals/node_modules/webdriverio": {
- "version": "8.16.4",
- "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.16.4.tgz",
- "integrity": "sha512-gt1f7qlfGzx8kKvGBxeOtYqbxYAi929fIFNnE4nDDxOzBL6Pd2ctStiqMjxeCOsZ5Z5sDDKw//P6FSRYnhNiaA==",
- "optional": true,
- "peer": true,
- "dependencies": {
- "@types/node": "^20.1.0",
- "@wdio/config": "8.16.3",
- "@wdio/logger": "8.11.0",
- "@wdio/protocols": "8.14.6",
- "@wdio/repl": "8.10.1",
- "@wdio/types": "8.16.3",
- "@wdio/utils": "8.16.3",
- "archiver": "^6.0.0",
- "aria-query": "^5.0.0",
- "css-shorthand-properties": "^1.1.1",
- "css-value": "^0.0.1",
- "devtools-protocol": "^0.0.1188743",
- "grapheme-splitter": "^1.0.2",
- "import-meta-resolve": "^3.0.0",
- "is-plain-obj": "^4.1.0",
- "lodash.clonedeep": "^4.5.0",
- "lodash.zip": "^4.2.0",
- "minimatch": "^9.0.0",
- "puppeteer-core": "^20.9.0",
- "query-selector-shadow-dom": "^1.0.0",
- "resq": "^1.9.1",
- "rgb2hex": "0.2.5",
- "serialize-error": "^11.0.1",
- "webdriver": "8.16.4"
- },
- "engines": {
- "node": "^16.13 || >=18"
- },
- "peerDependencies": {
- "devtools": "^8.14.0"
- },
- "peerDependenciesMeta": {
- "devtools": {
- "optional": true
- }
- }
- },
- "node_modules/@wdio/globals/node_modules/ws": {
- "version": "8.14.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.0.tgz",
- "integrity": "sha512-WR0RJE9Ehsio6U4TuM+LmunEsjQ5ncHlw4sn9ihD6RoJKZrVyH9FWV3dmnwu8B2aNib1OvG2X6adUCyFpQyWcg==",
- "optional": true,
- "peer": true,
- "engines": {
- "node": ">=10.0.0"
- },
- "peerDependencies": {
- "bufferutil": "^4.0.1",
- "utf-8-validate": ">=5.0.2"
- },
- "peerDependenciesMeta": {
- "bufferutil": {
- "optional": true
- },
- "utf-8-validate": {
- "optional": true
- }
- }
- },
- "node_modules/@wdio/globals/node_modules/yargs": {
- "version": "17.7.1",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz",
- "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==",
- "optional": true,
- "peer": true,
- "dependencies": {
- "cliui": "^8.0.1",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.3",
- "y18n": "^5.0.5",
- "yargs-parser": "^21.1.1"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@wdio/globals/node_modules/yargs-parser": {
- "version": "21.1.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
- "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
- "optional": true,
- "peer": true,
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@wdio/globals/node_modules/zip-stream": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-5.0.1.tgz",
- "integrity": "sha512-UfZ0oa0C8LI58wJ+moL46BDIMgCQbnsb+2PoiJYtonhBsMh2bq1eRBVkvjfVsqbEHd9/EgKPUuL9saSSsec8OA==",
- "optional": true,
- "peer": true,
- "dependencies": {
- "archiver-utils": "^4.0.1",
- "compress-commons": "^5.0.1",
- "readable-stream": "^3.6.0"
- },
- "engines": {
- "node": ">= 12.0.0"
- }
- },
- "node_modules/@wdio/local-runner": {
- "version": "8.16.4",
- "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-8.16.4.tgz",
- "integrity": "sha512-lIEcS6RDwGL4JyxOUdt9y2bKhJS7jMX1bdxfKSt9HUhZsBK0deoFMrMqtwRoF8HsKLt58gfHu2ADi3rES0wUNA==",
- "dependencies": {
- "@types/node": "^20.1.0",
- "@wdio/logger": "8.11.0",
- "@wdio/repl": "8.10.1",
- "@wdio/runner": "8.16.4",
- "@wdio/types": "8.16.3",
- "async-exit-hook": "^2.0.1",
- "split2": "^4.1.0",
- "stream-buffers": "^3.0.2"
- },
- "engines": {
- "node": "^16.13 || >=18"
- }
- },
- "node_modules/@wdio/local-runner/node_modules/@wdio/types": {
- "version": "8.16.3",
- "resolved": "https://registry.npmjs.org/@wdio/types/-/types-8.16.3.tgz",
- "integrity": "sha512-cH6eKNKkx5ZVJxf7omwtqt88N/mI8Hn2qnXe4DHIYNC4wSDFPhSsuurRhH7s7fnk3biLEQfinuc3cxV0HefSVw==",
- "dependencies": {
- "@types/node": "^20.1.0"
- },
- "engines": {
- "node": "^16.13 || >=18"
- }
- },
- "node_modules/@wdio/logger": {
- "version": "8.11.0",
- "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.11.0.tgz",
- "integrity": "sha512-IsuKSaYi7NKEdgA57h8muzlN/MVp1dQG+V4C//7g4m03YJUnNQLvDhJzLjdeNTfvZy61U7foQSyt+3ktNzZkXA==",
- "dependencies": {
- "chalk": "^5.1.2",
- "loglevel": "^1.6.0",
- "loglevel-plugin-prefix": "^0.8.4",
- "strip-ansi": "^7.1.0"
- },
- "engines": {
- "node": "^16.13 || >=18"
- }
- },
- "node_modules/@wdio/logger/node_modules/chalk": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz",
- "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
- "engines": {
- "node": "^12.17.0 || ^14.13 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@wdio/mocha-framework": {
- "version": "8.16.3",
- "resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-8.16.3.tgz",
- "integrity": "sha512-aORPOQPiSQ5g26BSbaQkfO3MQUlpa99ZByc4tZPvQl84/Do0rvCP3JWfE4Db1YehStVKpisGwK7fUA6fpWkFQA==",
- "dependencies": {
- "@types/mocha": "^10.0.0",
- "@types/node": "^20.1.0",
- "@wdio/logger": "8.11.0",
- "@wdio/types": "8.16.3",
- "@wdio/utils": "8.16.3",
- "mocha": "^10.0.0"
- },
- "engines": {
- "node": "^16.13 || >=18"
- }
- },
- "node_modules/@wdio/mocha-framework/node_modules/@wdio/types": {
- "version": "8.16.3",
- "resolved": "https://registry.npmjs.org/@wdio/types/-/types-8.16.3.tgz",
- "integrity": "sha512-cH6eKNKkx5ZVJxf7omwtqt88N/mI8Hn2qnXe4DHIYNC4wSDFPhSsuurRhH7s7fnk3biLEQfinuc3cxV0HefSVw==",
- "dependencies": {
- "@types/node": "^20.1.0"
- },
- "engines": {
- "node": "^16.13 || >=18"
- }
- },
- "node_modules/@wdio/mocha-framework/node_modules/@wdio/utils": {
- "version": "8.16.3",
- "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.16.3.tgz",
- "integrity": "sha512-bX/sYOM+tI4hjMIcvSdL522c2xwkas6pII6AUhuBT2UIUkJnp7+OHijJ1l5kHAzRewCdcL3W4dm9exPH2URU+Q==",
- "dependencies": {
- "@puppeteer/browsers": "^1.6.0",
- "@wdio/logger": "8.11.0",
- "@wdio/types": "8.16.3",
- "decamelize": "^6.0.0",
- "deepmerge-ts": "^5.1.0",
- "edgedriver": "^5.3.5",
- "geckodriver": "^4.2.0",
- "get-port": "^7.0.0",
- "got": "^13.0.0",
- "import-meta-resolve": "^3.0.0",
- "locate-app": "^2.1.0",
- "safaridriver": "^0.1.0",
- "wait-port": "^1.0.4"
- },
- "engines": {
- "node": "^16.13 || >=18"
- }
- },
- "node_modules/@wdio/mocha-framework/node_modules/got": {
- "version": "13.0.0",
- "resolved": "https://registry.npmjs.org/got/-/got-13.0.0.tgz",
- "integrity": "sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==",
- "dependencies": {
- "@sindresorhus/is": "^5.2.0",
- "@szmarczak/http-timer": "^5.0.1",
- "cacheable-lookup": "^7.0.0",
- "cacheable-request": "^10.2.8",
- "decompress-response": "^6.0.0",
- "form-data-encoder": "^2.1.2",
- "get-stream": "^6.0.1",
- "http2-wrapper": "^2.1.10",
- "lowercase-keys": "^3.0.0",
- "p-cancelable": "^3.0.0",
- "responselike": "^3.0.0"
- },
- "engines": {
- "node": ">=16"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/got?sponsor=1"
- }
- },
- "node_modules/@wdio/protocols": {
- "version": "8.14.6",
- "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-8.14.6.tgz",
- "integrity": "sha512-KM2taEMUDEt1of0Na/6kIv/aNzX0pmr0etpKRci4QrWPQ1O11dXxWjkatFILQz6qOVKvQ0v+vkTPQRUllmH+uQ=="
- },
- "node_modules/@wdio/repl": {
- "version": "8.10.1",
- "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-8.10.1.tgz",
- "integrity": "sha512-VZ1WFHTNKjR8Ga97TtV2SZM6fvRjWbYI2i/f4pJB4PtusorKvONAMJf2LQcUBIyzbVobqr7KSrcjmSwRolI+yw==",
- "dependencies": {
- "@types/node": "^20.1.0"
- },
- "engines": {
- "node": "^16.13 || >=18"
- }
- },
- "node_modules/@wdio/reporter": {
- "version": "8.15.6",
- "resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-8.15.6.tgz",
- "integrity": "sha512-0gxFIdg9EeFijbsQDJW1WVnZxeNprRP+PCkZxZjdkHjX8II9rsYF7XpMdhAWaebqwNLWcZI3/xB9zOTeLgjaFg==",
- "dev": true,
- "dependencies": {
- "@types/node": "^20.1.0",
- "@wdio/logger": "8.11.0",
- "@wdio/types": "8.16.3",
- "diff": "^5.0.0",
- "object-inspect": "^1.12.0"
- },
- "engines": {
- "node": "^16.13 || >=18"
- }
- },
- "node_modules/@wdio/runner": {
- "version": "8.16.4",
- "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-8.16.4.tgz",
- "integrity": "sha512-sIVLAU+BRuBYQDbLpP5M80rvbiYdvJU7OREz5AMTOAwdJRaq9SXBX6IW01bxTYn7O10f/ajYU4pn1LYUaPrKlw==",
- "dependencies": {
- "@types/node": "^20.1.0",
- "@wdio/config": "8.16.3",
- "@wdio/globals": "8.16.4",
- "@wdio/logger": "8.11.0",
- "@wdio/types": "8.16.3",
- "@wdio/utils": "8.16.3",
- "deepmerge-ts": "^5.0.0",
- "expect-webdriverio": "^4.2.5",
- "gaze": "^1.1.2",
- "webdriver": "8.16.4",
- "webdriverio": "8.16.4"
- },
- "engines": {
- "node": "^16.13 || >=18"
- }
- },
- "node_modules/@wdio/runner/node_modules/@wdio/config": {
- "version": "8.16.3",
- "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.16.3.tgz",
- "integrity": "sha512-jSiv+lG/hHmVz933oXw+7rI51wGQSsxpxZTOjSylrQz6pngUrB/RxApPSX4VLPZfKxkucxHQ4PO5nuJ8satusg==",
- "dependencies": {
- "@wdio/logger": "8.11.0",
- "@wdio/types": "8.16.3",
- "@wdio/utils": "8.16.3",
- "decamelize": "^6.0.0",
- "deepmerge-ts": "^5.0.0",
- "glob": "^10.2.2",
- "import-meta-resolve": "^3.0.0",
- "read-pkg-up": "^10.0.0"
- },
- "engines": {
- "node": "^16.13 || >=18"
- }
- },
- "node_modules/@wdio/runner/node_modules/@wdio/types": {
- "version": "8.16.3",
- "resolved": "https://registry.npmjs.org/@wdio/types/-/types-8.16.3.tgz",
- "integrity": "sha512-cH6eKNKkx5ZVJxf7omwtqt88N/mI8Hn2qnXe4DHIYNC4wSDFPhSsuurRhH7s7fnk3biLEQfinuc3cxV0HefSVw==",
- "dependencies": {
- "@types/node": "^20.1.0"
- },
- "engines": {
- "node": "^16.13 || >=18"
- }
- },
- "node_modules/@wdio/runner/node_modules/@wdio/utils": {
- "version": "8.16.3",
- "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.16.3.tgz",
- "integrity": "sha512-bX/sYOM+tI4hjMIcvSdL522c2xwkas6pII6AUhuBT2UIUkJnp7+OHijJ1l5kHAzRewCdcL3W4dm9exPH2URU+Q==",
- "dependencies": {
- "@puppeteer/browsers": "^1.6.0",
- "@wdio/logger": "8.11.0",
- "@wdio/types": "8.16.3",
- "decamelize": "^6.0.0",
- "deepmerge-ts": "^5.1.0",
- "edgedriver": "^5.3.5",
- "geckodriver": "^4.2.0",
- "get-port": "^7.0.0",
- "got": "^13.0.0",
- "import-meta-resolve": "^3.0.0",
- "locate-app": "^2.1.0",
- "safaridriver": "^0.1.0",
- "wait-port": "^1.0.4"
- },
- "engines": {
- "node": "^16.13 || >=18"
- }
- },
- "node_modules/@wdio/runner/node_modules/@wdio/utils/node_modules/got": {
- "version": "13.0.0",
- "resolved": "https://registry.npmjs.org/got/-/got-13.0.0.tgz",
- "integrity": "sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==",
- "dependencies": {
- "@sindresorhus/is": "^5.2.0",
- "@szmarczak/http-timer": "^5.0.1",
- "cacheable-lookup": "^7.0.0",
- "cacheable-request": "^10.2.8",
- "decompress-response": "^6.0.0",
- "form-data-encoder": "^2.1.2",
- "get-stream": "^6.0.1",
- "http2-wrapper": "^2.1.10",
- "lowercase-keys": "^3.0.0",
- "p-cancelable": "^3.0.0",
- "responselike": "^3.0.0"
- },
- "engines": {
- "node": ">=16"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/got?sponsor=1"
- }
- },
- "node_modules/@wdio/runner/node_modules/archiver": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/archiver/-/archiver-6.0.1.tgz",
- "integrity": "sha512-CXGy4poOLBKptiZH//VlWdFuUC1RESbdZjGjILwBuZ73P7WkAUN0htfSfBq/7k6FRFlpu7bg4JOkj1vU9G6jcQ==",
- "dependencies": {
- "archiver-utils": "^4.0.1",
- "async": "^3.2.4",
- "buffer-crc32": "^0.2.1",
- "readable-stream": "^3.6.0",
- "readdir-glob": "^1.1.2",
- "tar-stream": "^3.0.0",
- "zip-stream": "^5.0.1"
- },
- "engines": {
- "node": ">= 12.0.0"
- }
- },
- "node_modules/@wdio/runner/node_modules/archiver-utils": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-4.0.1.tgz",
- "integrity": "sha512-Q4Q99idbvzmgCTEAAhi32BkOyq8iVI5EwdO0PmBDSGIzzjYNdcFn7Q7k3OzbLy4kLUPXfJtG6fO2RjftXbobBg==",
- "dependencies": {
- "glob": "^8.0.0",
- "graceful-fs": "^4.2.0",
- "lazystream": "^1.0.0",
- "lodash": "^4.17.15",
- "normalize-path": "^3.0.0",
- "readable-stream": "^3.6.0"
- },
- "engines": {
- "node": ">= 12.0.0"
- }
- },
- "node_modules/@wdio/runner/node_modules/archiver-utils/node_modules/glob": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
- "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^5.0.1",
- "once": "^1.3.0"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/@wdio/runner/node_modules/archiver-utils/node_modules/minimatch": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
- "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@wdio/runner/node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/@wdio/runner/node_modules/chromium-bidi": {
- "version": "0.4.16",
- "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.16.tgz",
- "integrity": "sha512-7ZbXdWERxRxSwo3txsBjjmc/NLxqb1Bk30mRb0BMS4YIaiV6zvKZqL/UAH+DdqcDYayDWk2n/y8klkBDODrPvA==",
- "dependencies": {
- "mitt": "3.0.0"
- },
- "peerDependencies": {
- "devtools-protocol": "*"
- }
- },
- "node_modules/@wdio/runner/node_modules/compress-commons": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-5.0.1.tgz",
- "integrity": "sha512-MPh//1cERdLtqwO3pOFLeXtpuai0Y2WCd5AhtKxznqM7WtaMYaOEMSgn45d9D10sIHSfIKE603HlOp8OPGrvag==",
- "dependencies": {
- "crc-32": "^1.2.0",
- "crc32-stream": "^5.0.0",
- "normalize-path": "^3.0.0",
- "readable-stream": "^3.6.0"
- },
- "engines": {
- "node": ">= 12.0.0"
- }
- },
- "node_modules/@wdio/runner/node_modules/crc32-stream": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-5.0.0.tgz",
- "integrity": "sha512-B0EPa1UK+qnpBZpG+7FgPCu0J2ETLpXq09o9BkLkEAhdB6Z61Qo4pJ3JYu0c+Qi+/SAL7QThqnzS06pmSSyZaw==",
- "dependencies": {
- "crc-32": "^1.2.0",
- "readable-stream": "^3.4.0"
- },
- "engines": {
- "node": ">= 12.0.0"
- }
- },
- "node_modules/@wdio/runner/node_modules/cross-fetch": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz",
- "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==",
- "dependencies": {
- "node-fetch": "^2.6.12"
- }
- },
- "node_modules/@wdio/runner/node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/@wdio/runner/node_modules/devtools-protocol": {
- "version": "0.0.1188743",
- "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1188743.tgz",
- "integrity": "sha512-FZDQC58vLiGR2mjSgsMzU8aEJieovMonIyxf38b775eYdIfAYgSzyAWnDf0Eq6ouF/L9qcbqR8jcQeIC34jp/w=="
- },
- "node_modules/@wdio/runner/node_modules/is-plain-obj": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
- "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@wdio/runner/node_modules/ky": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/ky/-/ky-1.0.1.tgz",
- "integrity": "sha512-UvcwpQO0LOuZwG0Ti3VDo6w57KYt+r4bWEYlNaMt82hgyFtse86QtOGum1RzsZni31FndXQl6NvtDArfunt2JQ==",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/ky?sponsor=1"
- }
- },
- "node_modules/@wdio/runner/node_modules/minimatch": {
- "version": "9.0.3",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
- "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/@wdio/runner/node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
- "node_modules/@wdio/runner/node_modules/puppeteer-core": {
- "version": "20.9.0",
- "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-20.9.0.tgz",
- "integrity": "sha512-H9fYZQzMTRrkboEfPmf7m3CLDN6JvbxXA3qTtS+dFt27tR+CsFHzPsT6pzp6lYL6bJbAPaR0HaPO6uSi+F94Pg==",
- "dependencies": {
- "@puppeteer/browsers": "1.4.6",
- "chromium-bidi": "0.4.16",
- "cross-fetch": "4.0.0",
- "debug": "4.3.4",
- "devtools-protocol": "0.0.1147663",
- "ws": "8.13.0"
- },
- "engines": {
- "node": ">=16.3.0"
- },
- "peerDependencies": {
- "typescript": ">= 4.7.4"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@wdio/runner/node_modules/puppeteer-core/node_modules/@puppeteer/browsers": {
- "version": "1.4.6",
- "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.4.6.tgz",
- "integrity": "sha512-x4BEjr2SjOPowNeiguzjozQbsc6h437ovD/wu+JpaenxVLm3jkgzHY2xOslMTp50HoTvQreMjiexiGQw1sqZlQ==",
- "dependencies": {
- "debug": "4.3.4",
- "extract-zip": "2.0.1",
- "progress": "2.0.3",
- "proxy-agent": "6.3.0",
- "tar-fs": "3.0.4",
- "unbzip2-stream": "1.4.3",
- "yargs": "17.7.1"
- },
- "bin": {
- "browsers": "lib/cjs/main-cli.js"
- },
- "engines": {
- "node": ">=16.3.0"
- },
- "peerDependencies": {
- "typescript": ">= 4.7.4"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@wdio/runner/node_modules/puppeteer-core/node_modules/devtools-protocol": {
- "version": "0.0.1147663",
- "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1147663.tgz",
- "integrity": "sha512-hyWmRrexdhbZ1tcJUGpO95ivbRhWXz++F4Ko+n21AY5PNln2ovoJw+8ZMNDTtip+CNFQfrtLVh/w4009dXO/eQ=="
- },
- "node_modules/@wdio/runner/node_modules/puppeteer-core/node_modules/ws": {
- "version": "8.13.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz",
- "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==",
- "engines": {
- "node": ">=10.0.0"
- },
- "peerDependencies": {
- "bufferutil": "^4.0.1",
- "utf-8-validate": ">=5.0.2"
- },
- "peerDependenciesMeta": {
- "bufferutil": {
- "optional": true
- },
- "utf-8-validate": {
- "optional": true
- }
- }
- },
- "node_modules/@wdio/runner/node_modules/readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/@wdio/runner/node_modules/tar-stream": {
- "version": "3.1.6",
- "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz",
- "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==",
- "dependencies": {
- "b4a": "^1.6.4",
- "fast-fifo": "^1.2.0",
- "streamx": "^2.15.0"
- }
- },
- "node_modules/@wdio/runner/node_modules/webdriver": {
- "version": "8.16.4",
- "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.16.4.tgz",
- "integrity": "sha512-iL8yt6JrH6GqWCMyyZ8/4UMH1Pkez0VCYtkF5Fwwy6gLbP7q4iOVIFjKXP6Cg5gA2aoJvf9TLZ4cFbGOvsZXCw==",
- "dependencies": {
- "@types/node": "^20.1.0",
- "@types/ws": "^8.5.3",
- "@wdio/config": "8.16.3",
- "@wdio/logger": "8.11.0",
- "@wdio/protocols": "8.14.6",
- "@wdio/types": "8.16.3",
- "@wdio/utils": "8.16.3",
- "deepmerge-ts": "^5.1.0",
- "got": "^ 12.6.1",
- "ky": "^1.0.0",
- "ws": "^8.8.0"
- },
- "engines": {
- "node": "^16.13 || >=18"
- }
- },
- "node_modules/@wdio/runner/node_modules/webdriverio": {
- "version": "8.16.4",
- "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.16.4.tgz",
- "integrity": "sha512-gt1f7qlfGzx8kKvGBxeOtYqbxYAi929fIFNnE4nDDxOzBL6Pd2ctStiqMjxeCOsZ5Z5sDDKw//P6FSRYnhNiaA==",
- "dependencies": {
- "@types/node": "^20.1.0",
- "@wdio/config": "8.16.3",
- "@wdio/logger": "8.11.0",
- "@wdio/protocols": "8.14.6",
- "@wdio/repl": "8.10.1",
- "@wdio/types": "8.16.3",
- "@wdio/utils": "8.16.3",
- "archiver": "^6.0.0",
- "aria-query": "^5.0.0",
- "css-shorthand-properties": "^1.1.1",
- "css-value": "^0.0.1",
- "devtools-protocol": "^0.0.1188743",
- "grapheme-splitter": "^1.0.2",
- "import-meta-resolve": "^3.0.0",
- "is-plain-obj": "^4.1.0",
- "lodash.clonedeep": "^4.5.0",
- "lodash.zip": "^4.2.0",
- "minimatch": "^9.0.0",
- "puppeteer-core": "^20.9.0",
- "query-selector-shadow-dom": "^1.0.0",
- "resq": "^1.9.1",
- "rgb2hex": "0.2.5",
- "serialize-error": "^11.0.1",
- "webdriver": "8.16.4"
- },
- "engines": {
- "node": "^16.13 || >=18"
- },
- "peerDependencies": {
- "devtools": "^8.14.0"
- },
- "peerDependenciesMeta": {
- "devtools": {
- "optional": true
- }
- }
- },
- "node_modules/@wdio/runner/node_modules/ws": {
+ "node_modules/@wdio/cli/node_modules/ws": {
"version": "8.14.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.14.0.tgz",
"integrity": "sha512-WR0RJE9Ehsio6U4TuM+LmunEsjQ5ncHlw4sn9ihD6RoJKZrVyH9FWV3dmnwu8B2aNib1OvG2X6adUCyFpQyWcg==",
@@ -17278,24 +15859,7 @@
}
}
},
- "node_modules/@wdio/runner/node_modules/yargs": {
- "version": "17.7.1",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz",
- "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==",
- "dependencies": {
- "cliui": "^8.0.1",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.3",
- "y18n": "^5.0.5",
- "yargs-parser": "^21.1.1"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@wdio/runner/node_modules/yargs-parser": {
+ "node_modules/@wdio/cli/node_modules/yargs-parser": {
"version": "21.1.1",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
"integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
@@ -17303,7 +15867,7 @@
"node": ">=12"
}
},
- "node_modules/@wdio/runner/node_modules/zip-stream": {
+ "node_modules/@wdio/cli/node_modules/zip-stream": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-5.0.1.tgz",
"integrity": "sha512-UfZ0oa0C8LI58wJ+moL46BDIMgCQbnsb+2PoiJYtonhBsMh2bq1eRBVkvjfVsqbEHd9/EgKPUuL9saSSsec8OA==",
@@ -17316,6 +15880,237 @@
"node": ">= 12.0.0"
}
},
+ "node_modules/@wdio/config": {
+ "version": "8.16.3",
+ "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.16.3.tgz",
+ "integrity": "sha512-jSiv+lG/hHmVz933oXw+7rI51wGQSsxpxZTOjSylrQz6pngUrB/RxApPSX4VLPZfKxkucxHQ4PO5nuJ8satusg==",
+ "dependencies": {
+ "@wdio/logger": "8.11.0",
+ "@wdio/types": "8.16.3",
+ "@wdio/utils": "8.16.3",
+ "decamelize": "^6.0.0",
+ "deepmerge-ts": "^5.0.0",
+ "glob": "^10.2.2",
+ "import-meta-resolve": "^3.0.0",
+ "read-pkg-up": "^10.0.0"
+ },
+ "engines": {
+ "node": "^16.13 || >=18"
+ }
+ },
+ "node_modules/@wdio/cucumber-framework": {
+ "version": "8.16.4",
+ "resolved": "https://registry.npmjs.org/@wdio/cucumber-framework/-/cucumber-framework-8.16.4.tgz",
+ "integrity": "sha512-7Xi8GqvOq/CC/iKpkLxGTxfm6hUWxkXHLql9vKefqvzgL85QJhy2/zOOia3m0OgV3tQJ3ZzlwteYgw7+fpFoAg==",
+ "dev": true,
+ "dependencies": {
+ "@cucumber/cucumber": "9.4.0",
+ "@cucumber/gherkin": "26.2.0",
+ "@cucumber/messages": "22.0.0",
+ "@cucumber/tag-expressions": "5.0.6",
+ "@types/node": "^20.1.0",
+ "@wdio/logger": "8.11.0",
+ "@wdio/types": "8.16.3",
+ "@wdio/utils": "8.16.3",
+ "glob": "^10.2.2",
+ "is-glob": "^4.0.0"
+ },
+ "engines": {
+ "node": "^16.13 || >=18"
+ }
+ },
+ "node_modules/@wdio/globals": {
+ "version": "8.16.4",
+ "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-8.16.4.tgz",
+ "integrity": "sha512-Ia+59jZ+ZonrdZk/Vk98m7AEHZWUZBoJtRwOx5IPXeWCSdi+Sz2+lQzEzSGWJv+iYxsI7qI5Lyv66Th4e5SiLg==",
+ "engines": {
+ "node": "^16.13 || >=18"
+ },
+ "optionalDependencies": {
+ "expect-webdriverio": "^4.2.5",
+ "webdriverio": "8.16.4"
+ }
+ },
+ "node_modules/@wdio/local-runner": {
+ "version": "8.16.4",
+ "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-8.16.4.tgz",
+ "integrity": "sha512-lIEcS6RDwGL4JyxOUdt9y2bKhJS7jMX1bdxfKSt9HUhZsBK0deoFMrMqtwRoF8HsKLt58gfHu2ADi3rES0wUNA==",
+ "dependencies": {
+ "@types/node": "^20.1.0",
+ "@wdio/logger": "8.11.0",
+ "@wdio/repl": "8.10.1",
+ "@wdio/runner": "8.16.4",
+ "@wdio/types": "8.16.3",
+ "async-exit-hook": "^2.0.1",
+ "split2": "^4.1.0",
+ "stream-buffers": "^3.0.2"
+ },
+ "engines": {
+ "node": "^16.13 || >=18"
+ }
+ },
+ "node_modules/@wdio/local-runner/node_modules/@wdio/types": {
+ "version": "8.16.3",
+ "resolved": "https://registry.npmjs.org/@wdio/types/-/types-8.16.3.tgz",
+ "integrity": "sha512-cH6eKNKkx5ZVJxf7omwtqt88N/mI8Hn2qnXe4DHIYNC4wSDFPhSsuurRhH7s7fnk3biLEQfinuc3cxV0HefSVw==",
+ "dependencies": {
+ "@types/node": "^20.1.0"
+ },
+ "engines": {
+ "node": "^16.13 || >=18"
+ }
+ },
+ "node_modules/@wdio/logger": {
+ "version": "8.11.0",
+ "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.11.0.tgz",
+ "integrity": "sha512-IsuKSaYi7NKEdgA57h8muzlN/MVp1dQG+V4C//7g4m03YJUnNQLvDhJzLjdeNTfvZy61U7foQSyt+3ktNzZkXA==",
+ "dependencies": {
+ "chalk": "^5.1.2",
+ "loglevel": "^1.6.0",
+ "loglevel-plugin-prefix": "^0.8.4",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": "^16.13 || >=18"
+ }
+ },
+ "node_modules/@wdio/logger/node_modules/chalk": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz",
+ "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@wdio/mocha-framework": {
+ "version": "8.16.3",
+ "resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-8.16.3.tgz",
+ "integrity": "sha512-aORPOQPiSQ5g26BSbaQkfO3MQUlpa99ZByc4tZPvQl84/Do0rvCP3JWfE4Db1YehStVKpisGwK7fUA6fpWkFQA==",
+ "dependencies": {
+ "@types/mocha": "^10.0.0",
+ "@types/node": "^20.1.0",
+ "@wdio/logger": "8.11.0",
+ "@wdio/types": "8.16.3",
+ "@wdio/utils": "8.16.3",
+ "mocha": "^10.0.0"
+ },
+ "engines": {
+ "node": "^16.13 || >=18"
+ }
+ },
+ "node_modules/@wdio/mocha-framework/node_modules/@wdio/types": {
+ "version": "8.16.3",
+ "resolved": "https://registry.npmjs.org/@wdio/types/-/types-8.16.3.tgz",
+ "integrity": "sha512-cH6eKNKkx5ZVJxf7omwtqt88N/mI8Hn2qnXe4DHIYNC4wSDFPhSsuurRhH7s7fnk3biLEQfinuc3cxV0HefSVw==",
+ "dependencies": {
+ "@types/node": "^20.1.0"
+ },
+ "engines": {
+ "node": "^16.13 || >=18"
+ }
+ },
+ "node_modules/@wdio/mocha-framework/node_modules/@wdio/utils": {
+ "version": "8.16.3",
+ "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.16.3.tgz",
+ "integrity": "sha512-bX/sYOM+tI4hjMIcvSdL522c2xwkas6pII6AUhuBT2UIUkJnp7+OHijJ1l5kHAzRewCdcL3W4dm9exPH2URU+Q==",
+ "dependencies": {
+ "@puppeteer/browsers": "^1.6.0",
+ "@wdio/logger": "8.11.0",
+ "@wdio/types": "8.16.3",
+ "decamelize": "^6.0.0",
+ "deepmerge-ts": "^5.1.0",
+ "edgedriver": "^5.3.5",
+ "geckodriver": "^4.2.0",
+ "get-port": "^7.0.0",
+ "got": "^13.0.0",
+ "import-meta-resolve": "^3.0.0",
+ "locate-app": "^2.1.0",
+ "safaridriver": "^0.1.0",
+ "wait-port": "^1.0.4"
+ },
+ "engines": {
+ "node": "^16.13 || >=18"
+ }
+ },
+ "node_modules/@wdio/mocha-framework/node_modules/got": {
+ "version": "13.0.0",
+ "resolved": "https://registry.npmjs.org/got/-/got-13.0.0.tgz",
+ "integrity": "sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==",
+ "dependencies": {
+ "@sindresorhus/is": "^5.2.0",
+ "@szmarczak/http-timer": "^5.0.1",
+ "cacheable-lookup": "^7.0.0",
+ "cacheable-request": "^10.2.8",
+ "decompress-response": "^6.0.0",
+ "form-data-encoder": "^2.1.2",
+ "get-stream": "^6.0.1",
+ "http2-wrapper": "^2.1.10",
+ "lowercase-keys": "^3.0.0",
+ "p-cancelable": "^3.0.0",
+ "responselike": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/got?sponsor=1"
+ }
+ },
+ "node_modules/@wdio/protocols": {
+ "version": "8.14.6",
+ "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-8.14.6.tgz",
+ "integrity": "sha512-KM2taEMUDEt1of0Na/6kIv/aNzX0pmr0etpKRci4QrWPQ1O11dXxWjkatFILQz6qOVKvQ0v+vkTPQRUllmH+uQ=="
+ },
+ "node_modules/@wdio/repl": {
+ "version": "8.10.1",
+ "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-8.10.1.tgz",
+ "integrity": "sha512-VZ1WFHTNKjR8Ga97TtV2SZM6fvRjWbYI2i/f4pJB4PtusorKvONAMJf2LQcUBIyzbVobqr7KSrcjmSwRolI+yw==",
+ "dependencies": {
+ "@types/node": "^20.1.0"
+ },
+ "engines": {
+ "node": "^16.13 || >=18"
+ }
+ },
+ "node_modules/@wdio/reporter": {
+ "version": "8.16.3",
+ "resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-8.16.3.tgz",
+ "integrity": "sha512-sxjFbxeZF0130kwSbHGb1FLP1a+RbW41MI78sa0IKz5SnyTRbjexd9nUuP41cYKZqu+ADgtx+i7sH8+3zuffkA==",
+ "dependencies": {
+ "@types/node": "^20.1.0",
+ "@wdio/logger": "8.11.0",
+ "@wdio/types": "8.16.3",
+ "diff": "^5.0.0",
+ "object-inspect": "^1.12.0"
+ },
+ "engines": {
+ "node": "^16.13 || >=18"
+ }
+ },
+ "node_modules/@wdio/runner": {
+ "version": "8.16.4",
+ "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-8.16.4.tgz",
+ "integrity": "sha512-sIVLAU+BRuBYQDbLpP5M80rvbiYdvJU7OREz5AMTOAwdJRaq9SXBX6IW01bxTYn7O10f/ajYU4pn1LYUaPrKlw==",
+ "dependencies": {
+ "@types/node": "^20.1.0",
+ "@wdio/config": "8.16.3",
+ "@wdio/globals": "8.16.4",
+ "@wdio/logger": "8.11.0",
+ "@wdio/types": "8.16.3",
+ "@wdio/utils": "8.16.3",
+ "deepmerge-ts": "^5.0.0",
+ "expect-webdriverio": "^4.2.5",
+ "gaze": "^1.1.2",
+ "webdriver": "8.16.4",
+ "webdriverio": "8.16.4"
+ },
+ "engines": {
+ "node": "^16.13 || >=18"
+ }
+ },
"node_modules/@wdio/sauce-service": {
"version": "8.16.4",
"resolved": "https://registry.npmjs.org/@wdio/sauce-service/-/sauce-service-8.16.4.tgz",
@@ -17843,6 +16638,12 @@
"integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==",
"dev": true
},
+ "node_modules/array-timsort": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz",
+ "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==",
+ "dev": true
+ },
"node_modules/array-union": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
@@ -18174,18 +16975,6 @@
"node": ">=8"
}
},
- "node_modules/binaryextensions": {
- "version": "4.18.0",
- "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-4.18.0.tgz",
- "integrity": "sha512-PQu3Kyv9dM4FnwB7XGj1+HucW+ShvJzJqjuw1JkKVs1mWdwOKVcRjOi+pV9X52A0tNvrPCsPkbFFQb+wE1EAXw==",
- "dev": true,
- "engines": {
- "node": ">=0.8"
- },
- "funding": {
- "url": "https://bevry.me/fund"
- }
- },
"node_modules/bl": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
@@ -19564,11 +18353,21 @@
"node": ">= 0.6.x"
}
},
- "node_modules/commondir": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
- "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
- "dev": true
+ "node_modules/comment-json": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.2.3.tgz",
+ "integrity": "sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==",
+ "dev": true,
+ "dependencies": {
+ "array-timsort": "^1.0.3",
+ "core-util-is": "^1.0.3",
+ "esprima": "^4.0.1",
+ "has-own-prop": "^2.0.0",
+ "repeat-string": "^1.6.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
},
"node_modules/compare-func": {
"version": "2.0.0",
@@ -22716,58 +21515,6 @@
"webdriverio": "^8.13.1"
}
},
- "node_modules/express": {
- "version": "4.18.2",
- "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
- "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
- "dependencies": {
- "accepts": "~1.3.8",
- "array-flatten": "1.1.1",
- "body-parser": "1.20.1",
- "content-disposition": "0.5.4",
- "content-type": "~1.0.4",
- "cookie": "0.5.0",
- "cookie-signature": "1.0.6",
- "debug": "2.6.9",
- "depd": "2.0.0",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "finalhandler": "1.2.0",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
- "merge-descriptors": "1.0.1",
- "methods": "~1.1.2",
- "on-finished": "2.4.1",
- "parseurl": "~1.3.3",
- "path-to-regexp": "0.1.7",
- "proxy-addr": "~2.0.7",
- "qs": "6.11.0",
- "range-parser": "~1.2.1",
- "safe-buffer": "5.2.1",
- "send": "0.18.0",
- "serve-static": "1.15.0",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "type-is": "~1.6.18",
- "utils-merge": "1.0.1",
- "vary": "~1.1.2"
- },
- "engines": {
- "node": ">= 0.10.0"
- }
- },
- "node_modules/express-fileupload": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/express-fileupload/-/express-fileupload-1.4.0.tgz",
- "integrity": "sha512-RjzLCHxkv3umDeZKeFeMg8w7qe0V09w3B7oGZprr/oO2H/ISCgNzuqzn7gV3HRWb37GjRk429CCpSLS2KNTqMQ==",
- "dependencies": {
- "busboy": "^1.6.0"
- },
- "engines": {
- "node": ">=12.0.0"
- }
- },
"node_modules/express-session": {
"version": "1.17.0",
"resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.0.tgz",
@@ -24114,16 +22861,6 @@
"node": ">= 4.0.0"
}
},
- "node_modules/gifwrap": {
- "version": "0.9.4",
- "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz",
- "integrity": "sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==",
- "dev": true,
- "dependencies": {
- "image-q": "^4.0.0",
- "omggif": "^1.0.10"
- }
- },
"node_modules/git-raw-commits": {
"version": "2.0.11",
"resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz",
@@ -24543,6 +23280,15 @@
"node": ">=8"
}
},
+ "node_modules/has-own-prop": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz",
+ "integrity": "sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/has-property-descriptors": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
@@ -24764,6 +23510,7 @@
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz",
"integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==",
+ "dev": true,
"dependencies": {
"@types/http-proxy": "^1.17.8",
"http-proxy": "^1.18.1",
@@ -24787,6 +23534,7 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz",
"integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==",
+ "dev": true,
"engines": {
"node": ">=10"
},
@@ -24797,7 +23545,8 @@
"node_modules/http-proxy/node_modules/eventemitter3": {
"version": "4.0.7",
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
- "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="
+ "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
+ "dev": true
},
"node_modules/http2-wrapper": {
"version": "2.2.0",
@@ -25938,9 +24687,10 @@
}
},
"node_modules/jsonwebtoken": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.1.tgz",
- "integrity": "sha512-K8wx7eJ5TPvEjuiVSkv167EVboBDv9PZdDoF7BgeQnBLVvZWW9clr2PsQHVJDTKaEIH5JBIwHujGcHp7GgI2eg==",
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz",
+ "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==",
+ "dev": true,
"dependencies": {
"jws": "^3.2.2",
"lodash.includes": "^4.3.0",
@@ -26519,7 +25269,8 @@
"node_modules/lodash.includes": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
- "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w=="
+ "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==",
+ "dev": true
},
"node_modules/lodash.isarguments": {
"version": "3.1.0",
@@ -26530,7 +25281,8 @@
"node_modules/lodash.isboolean": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
- "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg=="
+ "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==",
+ "dev": true
},
"node_modules/lodash.isfunction": {
"version": "3.0.9",
@@ -26541,7 +25293,8 @@
"node_modules/lodash.isinteger": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
- "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA=="
+ "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==",
+ "dev": true
},
"node_modules/lodash.ismatch": {
"version": "4.4.0",
@@ -26552,12 +25305,20 @@
"node_modules/lodash.isnumber": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
- "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw=="
+ "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==",
+ "dev": true
},
"node_modules/lodash.isplainobject": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
- "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA=="
+ "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
+ "dev": true
+ },
+ "node_modules/lodash.isstring": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
+ "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==",
+ "dev": true
},
"node_modules/lodash.isstring": {
"version": "4.0.1",
@@ -26585,7 +25346,8 @@
"node_modules/lodash.once": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
- "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg=="
+ "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==",
+ "dev": true
},
"node_modules/lodash.pickby": {
"version": "4.6.0",
@@ -29412,12 +28174,6 @@
"resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
"integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg=="
},
- "node_modules/phin": {
- "version": "2.9.3",
- "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz",
- "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==",
- "dev": true
- },
"node_modules/picocolors": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
@@ -31989,58 +30745,6 @@
"node": ">= 10.x"
}
},
- "node_modules/sqlite3": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.6.tgz",
- "integrity": "sha512-olYkWoKFVNSSSQNvxVUfjiVbz3YtBwTJj+mfV5zpHmqW3sELx2Cf4QCdirMelhM5Zh+KDVaKgQHqCxrqiWHybw==",
- "hasInstallScript": true,
- "dependencies": {
- "@mapbox/node-pre-gyp": "^1.0.0",
- "node-addon-api": "^4.2.0",
- "tar": "^6.1.11"
- },
- "optionalDependencies": {
- "node-gyp": "8.x"
- },
- "peerDependencies": {
- "node-gyp": "8.x"
- },
- "peerDependenciesMeta": {
- "node-gyp": {
- "optional": true
- }
- }
- },
- "node_modules/ssri": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",
- "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==",
- "optional": true,
- "dependencies": {
- "minipass": "^3.1.1"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/ssri/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "optional": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ssri/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "optional": true
- },
"node_modules/stack-utils": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
@@ -32682,9 +31386,10 @@
}
},
"node_modules/tar": {
- "version": "6.1.15",
- "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.15.tgz",
- "integrity": "sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==",
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz",
+ "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==",
+ "dev": true,
"dependencies": {
"chownr": "^2.0.0",
"fs-minipass": "^2.0.0",
@@ -33368,6 +32073,10 @@
"resolved": "examples/ui5-js-app",
"link": true
},
+ "node_modules/ui5-app-esm": {
+ "resolved": "examples/ui5-js-app-esm",
+ "link": true
+ },
"node_modules/ui5-middleware-livereload": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/ui5-middleware-livereload/-/ui5-middleware-livereload-3.0.0.tgz",
@@ -33825,15 +32534,6 @@
"node": ">= 0.8.0"
}
},
- "node_modules/utif": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz",
- "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==",
- "dev": true,
- "dependencies": {
- "pako": "^1.0.5"
- }
- },
"node_modules/util-arity": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/util-arity/-/util-arity-1.1.0.tgz",
diff --git a/package.json b/package.json
index ca57263c..792ffb85 100644
--- a/package.json
+++ b/package.json
@@ -31,6 +31,7 @@
".",
"examples/fe-app",
"examples/ui5-js-app",
+ "examples/ui5-js-app-esm",
"examples/ui5-ts-app",
"examples/cucumber",
"examples/cap-bookshop-wdi5"
@@ -48,6 +49,7 @@
"// test time": "refers to testing wdio-ui5-service",
"_startApp:js": "soerver -d ./examples/ui5-js-app/webapp -p 8888 -x ./examples/ui5-js-app/webapp/proxyrc.json",
"_startApp:js-tooling": "npm run serve --workspace=examples/ui5-js-app",
+ "_startApp:js:esm": "npm start --workspace=examples/ui5-js-app-esm -- -p 8082 ",
"_startApp:ts": "npm run start --workspace=examples/ui5-ts-app",
"_startApp:fe": "npm run serve --workspace=examples/fe-app",
"_startApp:cap": "npm run start --workspace=examples/cap-bookshop-wdi5",
@@ -55,8 +57,10 @@
"_test:ts-app": "wait-on tcp:8080 && npm run test --workspace=examples/ui5-ts-app",
"_test:cap-app": "wait-on tcp:4004 && npm run wdi5 --workspace=examples/cap-bookshop-wdi5 -- --headless",
"_test-h:js-app": "wait-on tcp:8888 && wait-on tcp:8080 && npm run test-h --workspace=examples/ui5-js-app",
+ "_test-h:js-app:esm": "wait-on tcp:8082 && npm run wdi5 --workspace=examples/ui5-js-app-esm -- --headless ",
"_test-h:ts-app": "wait-on tcp:8080 && npm run test -w examples/ui5-ts-app -- --headless && npm run test:lateInject -w examples/ui5-ts-app -- --headless",
"test-h:js-app": "run-p -r _startApp:js _startApp:js-tooling _test-h:js-app",
+ "test-h:js-app:esm": "run-p -r _startApp:js:esm _test-h:js-app:esm",
"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",
@@ -77,7 +81,7 @@
"startDoc": "docsify serve ./docs"
},
"dependencies": {
- "devtools": "^8.15.6",
+ "devtools": "^8.16.3",
"dotenv": "^16.3.1",
"semver": "^7.5.4"
},
@@ -92,35 +96,35 @@
"devDependencies": {
"@commitlint/cli": "^17.7.1",
"@commitlint/config-conventional": "^17.7.0",
- "@sap/approuter": "14.3.0",
+ "@sap/approuter": "14.3.1",
"@sap/ux-ui5-fe-mockserver-middleware": "^1.6.5",
"@types/openui5": "^1.117.0",
"@types/sinon": "^10.0.16",
- "@typescript-eslint/eslint-plugin": "^6.4.1",
- "@typescript-eslint/parser": "^6.4.1",
+ "@typescript-eslint/eslint-plugin": "^6.6.0",
+ "@typescript-eslint/parser": "^6.6.0",
"@ui5/cli": "^3",
"@wdio/sauce-service": "^8",
"cross-env": "^7.0.3",
"deepmerge": "^4.3.1",
"docsify-cli": "4.4.4",
- "eslint": "^8.47.0",
+ "eslint": "^8.48.0",
"eslint-config-prettier": "^9.0.0",
"eslint-plugin-prettier": "^5.0.0",
"fs-extra": "^11.1.1",
"husky": "^8.0.3",
"lint-staged": "^14.0.1",
"marky": "^1.2.5",
- "mbt": "^1.2.24",
+ "mbt": "^1.2.25",
"mocha": "^10.2.0",
"npm-run-all": "^4.1.5",
- "prettier": "^3.0.2",
+ "prettier": "^3.0.3",
"replace-in-file": "^7.0.1",
"rimraf": "^5.0.1",
"sinon": "^15.2.0",
"soerver": "^0.0.3",
"standard-version": "^9.5.0",
"ts-node": "^10.9.1",
- "typescript": "^5.1.6",
+ "typescript": "^5.2.2",
"wait-on": "^7.0.1"
},
"engines": {
diff --git a/src/service.ts b/src/service.ts
index 87776a3d..99f7fa62 100644
--- a/src/service.ts
+++ b/src/service.ts
@@ -34,7 +34,7 @@ export default class Service implements Services.ServiceInstance {
if (this._config.wdi5.skipInjectUI5OnStart) {
Logger.warn("skipped wdi5 injection!")
} else if (this._config.wdi5.btpWorkZoneEnablement) {
- Logger.info("delegating wdi5 injection to Work Zone enablement...")
+ Logger.info("delegating wdi5 injection to WorkZone enablement...")
await this.enableBTPWorkZoneStdEdition(browser[name])
} else {
await this.injectUI5(browser[name])
@@ -48,7 +48,7 @@ export default class Service implements Services.ServiceInstance {
if (this._config.wdi5.skipInjectUI5OnStart) {
Logger.warn("skipped wdi5 injection!")
} else if (this._config.wdi5.btpWorkZoneEnablement) {
- Logger.info("delegating wdi5 injection to Work Zone enablement...")
+ Logger.info("delegating wdi5 injection to WorkZone enablement...")
await this.enableBTPWorkZoneStdEdition(browser)
} else {
await this.injectUI5(browser)
diff --git a/src/wdi5.ts b/src/wdi5.ts
index 73cd2423..d8f72b45 100644
--- a/src/wdi5.ts
+++ b/src/wdi5.ts
@@ -7,10 +7,35 @@ const authenticatorInstances = {}
* a (static) helper class named after the tool
*/
export class wdi5 {
+ /**
+ * get an instance of wdi5's logger for some pretty looking console output
+ * @param sPrefix displayed within "[ ]" prepending the log message
+ * @returns an instance of wdi5's logger
+ */
static getLogger(sPrefix = "wdi5") {
return Logger.getInstance(sPrefix)
}
+ /**
+ * set the browsing context for to the WorkZone _shell_
+ *
+ * so that all methods of the browser object will be executed in the context of the WorkZone shell
+ */
+ static async toWorkZoneShell() {
+ await browser.switchToParentFrame()
+ await browser.pause(100) // let the browsing context settle
+ }
+
+ /**
+ * set the browsing context for to the WorkZone _app_
+ *
+ * so that all methods of the browser object will be executed in the context of the WorkZone app
+ */
+ static async toWorkZoneApp() {
+ await browser.switchToFrame(0)
+ await browser.pause(100) // let the browsing context settle
+ }
+
//// REVISIT: not yet/if still needed :)
// static wz = new Proxy(this, {
// get(target, prop, receiver) {