UNPKG

@sap_oss/wdio-qmate-service

Version:

[![REUSE status](https://api.reuse.software/badge/github.com/SAP/wdio-qmate-service)](https://api.reuse.software/info/github.com/SAP/wdio-qmate-service)[![Node.js CI](https://github.com/SAP/wdio-qmate-service/actions/workflows/node.js.yml/badge.svg)](http

379 lines (356 loc) 13.3 kB
// ===================== CONSTANTS ========================== const NEGATIVE_TEST_TIMEOUT = 10_000; // ======================= TESTS ============================ describe("Test for mixed properties (elementProperties, ancestorProperties, siblingProperties and descendantProperties)", function () { this.beforeAll(async () => { await browser.url("#/categories"); }); it("'happy case': should access element by nested elementProperties, ancestorProperties, siblingProperties, descendantProperties and domProperties", async () => { const selector = { elementProperties: { viewName: "sap.ui.demo.cart.view.Home", metadata: "sap.m.Bar", id: "*page-intHeader", siblingProperties: { viewName: "sap.ui.demo.cart.view.Home", metadata: "sap.m.Toolbar", id: "*searchBar*", domProperties: { nodeName: "div", class: "*sapMTB*" } }, ancestorProperties: { viewName: "sap.ui.demo.cart.view.Home", metadata: "sap.m.Page", id: "*page", ancestorProperties: { viewName: "sap.ui.demo.cart.view.Home", metadata: "sap.ui.core.mvc.XMLView", descendantProperties: { viewName: "sap.ui.demo.cart.view.Home", metadata: "sap.m.Page", id: "*page" } } } } }; await expect(browser.uiControl(selector)).toBeClickable(); }); it("'unhappy case': should access element by nested elementProperties, ancestorProperties, siblingProperties, domProperties and wrong descendantProperties", async () => { const selector = { elementProperties: { viewName: "sap.ui.demo.cart.view.Home", metadata: "sap.m.Bar", id: "*page-intHeader", siblingProperties: { viewName: "sap.ui.demo.cart.view.Home", metadata: "sap.m.Toolbar", id: "*searchBar33343", domProperties: { nodeName: "div", class: "sapMIBar sapMTB sapMTBNewFlex sapMTBInactive sapMTBStandard sapMTB-Auto-CTX sapMIBar-CTX sapMSubHeader-CTX sapContrastPlus", id: "container-cart---homeView--searchBar33343" } }, ancestorProperties: { viewName: "sap.ui.demo.cart.view.Home", metadata: "sap.m.Page", id: "*page", ancestorProperties: { viewName: "sap.ui.demo.cart.view.Home", metadata: "sap.m.Page", // "sap.m.Page" instead of "sap.ui.core.mvc.XMLView" descendantProperties: { viewName: "sap.ui.demo.cart.view.Home", metadata: "sap.m.Page", id: "*page" } } } } }; await expect(browser.uiControl(selector, undefined, NEGATIVE_TEST_TIMEOUT)).rejects.toThrowError(/No visible elements found/); }); it("'happy case': should access element by nested elementProperties, ancestorProperties, empty siblingProperties and descendantProperties", async () => { const selector = { elementProperties: { viewName: "sap.ui.demo.cart.view.Home", metadata: "sap.m.Bar", id: "*page-intHeader", siblingProperties: "", // empty siblingProperties ancestorProperties: { viewName: "sap.ui.demo.cart.view.Home", metadata: "sap.m.Page", id: "*page", ancestorProperties: { viewName: "sap.ui.demo.cart.view.Home", metadata: "sap.ui.core.mvc.XMLView", descendantProperties: { viewName: "sap.ui.demo.cart.view.Home", metadata: "sap.m.Page", id: "*page" } } } } }; await expect(browser.uiControl(selector)).toBeTruthy(); }); it("'happy case': should access element by nested elementProperties, ancestorProperties, domProperties, siblingProperties and empty descendantProperties", async () => { const selector = { elementProperties: { viewName: "sap.ui.demo.cart.view.Home", metadata: "sap.m.Bar", id: "*page-intHeader", siblingProperties: { viewName: "sap.ui.demo.cart.view.Home", metadata: "sap.m.Toolbar", id: "*searchBar33343", domProperties: { nodeName: "div", class: "sapMIBar sapMTB sapMTBNewFlex sapMTBInactive sapMTBStandard sapMTB-Auto-CTX sapMIBar-CTX sapMSubHeader-CTX sapContrastPlus", id: "container-cart---homeView--searchBar33343" } }, ancestorProperties: { viewName: "sap.ui.demo.cart.view.Home", metadata: "sap.m.Page", id: "*page", ancestorProperties: { viewName: "sap.ui.demo.cart.view.Home", metadata: "sap.ui.core.mvc.XMLView", descendantProperties: "" } } } }; await expect(browser.uiControl(selector)).toBeTruthy(); }); it("'unhappy case': should access element by nested elementProperties, ancestorProperties, siblingProperties, descendantProperties and wrong domProperties", async () => { const selector = { elementProperties: { viewName: "sap.ui.demo.cart.view.Home", metadata: "sap.m.Bar", id: "*page-intHeader", siblingProperties: { viewName: "sap.ui.demo.cart.view.Home", metadata: "sap.m.Toolbar", id: "*searchBar33343", domProperties: { nodeName: "li", // nodeName "li" instead of "div" id: "container-cart---homeView--searchBar33343" } }, ancestorProperties: { viewName: "sap.ui.demo.cart.view.Home", metadata: "sap.m.Page", id: "*page", ancestorProperties: { viewName: "sap.ui.demo.cart.view.Home", metadata: "sap.ui.core.mvc.XMLView", descendantProperties: { viewName: "sap.ui.demo.cart.view.Home", metadata: "sap.m.Page", id: "*page" } } } } }; await expect(browser.uiControl(selector, undefined, NEGATIVE_TEST_TIMEOUT)).rejects.toThrowError(/No visible elements found/); }); }); describe("Test for mixed properties (childProperties, parentProperties, prevSiblingProperties, nextSiblingProperties)", function () { this.beforeAll(async () => { await browser.url("#/categories"); }); it("'happy case': should access multiple elements by nested, childProperties, parentProperties, prevSiblingProperties, nextSiblingProperties", async () => { const selector = { "elementProperties": { "metadata": "sap.ui.core.Icon", "parentProperties": { "metadata": "sap.m.Button", "nextSiblingProperties": { "metadata": "sap.m.ObjectListItem", "childProperties": { "metadata": "sap.m.Text" } }, "prevSiblingProperties": { "metadata": "sap.m.FlexBox", "childProperties": { "metadata": "sap.m.Image" } } } } }; const elements = await browser.uiControls(selector); expect(elements.length).toBeGreaterThan(1); }); it("'unhappy case': should fail to find element when 'childProperties' is wrong", async () => { const selector = { "elementProperties": { "metadata": "sap.ui.core.Icon", "parentProperties": { "metadata": "sap.m.Button", "nextSiblingProperties": { "metadata": "sap.m.ToggleButton", "childProperties": { "metadata": "sap.m.Text" // <- wrong: real is "sap.ui.core.Icon" } }, "prevSiblingProperties": { "metadata": "sap.m.Title" }, "parentProperties": { "metadata": "sap.m.Bar" }, "childProperties": { "metadata": "sap.ui.core.Icon" } } } }; await expect(browser.uiControl(selector, undefined, NEGATIVE_TEST_TIMEOUT)).rejects.toThrowError(/No visible elements found/); }); it("'unhappy case': should fail to find element when 'parentProperties' is wrong", async () => { const selector = { "elementProperties": { "metadata": "sap.ui.core.Icon", "parentProperties": { "metadata": "sap.m.Button", "nextSiblingProperties": { "metadata": "sap.m.ToggleButton", "childProperties": { "metadata": "sap.ui.core.Icon" } }, "prevSiblingProperties": { "metadata": "sap.m.Title" }, "parentProperties": { "metadata": "sap.m.Text" // <- wrong: real is "sap.m.Bar" }, "childProperties": { "metadata": "sap.ui.core.Icon" } } } }; await expect(browser.uiControl(selector, undefined, NEGATIVE_TEST_TIMEOUT)).rejects.toThrowError(/No visible elements found/); }); it("'unhappy case': should fail to find element when 'prevSiblingProperties' is wrong", async () => { const selector = { "elementProperties": { "metadata": "sap.ui.core.Icon", "parentProperties": { "metadata": "sap.m.Button", "nextSiblingProperties": { "metadata": "sap.m.ToggleButton", "childProperties": { "metadata": "sap.ui.core.Icon" } }, "prevSiblingProperties": { "metadata": "sap.m.Text" // <- wrong: real is "sap.m.Title" }, "parentProperties": { "metadata": "sap.m.Bar" }, "childProperties": { "metadata": "sap.ui.core.Icon" } } } }; await expect(browser.uiControl(selector, undefined, NEGATIVE_TEST_TIMEOUT)).rejects.toThrowError(/No visible elements found/); }); it("'unhappy case': should fail to find element when 'nextSiblingProperties' is wrong", async () => { const selector = { "elementProperties": { "metadata": "sap.ui.core.Icon", "parentProperties": { "metadata": "sap.m.Button", "nextSiblingProperties": { "metadata": "sap.m.Button", // <- wrong: real is "sap.m.ToggleButton" "childProperties": { "metadata": "sap.ui.core.Icon" } }, "prevSiblingProperties": { "metadata": "sap.m.Title" }, "parentProperties": { "metadata": "sap.m.Bar" }, "childProperties": { "metadata": "sap.ui.core.Icon" } } } }; await expect(browser.uiControl(selector, undefined, NEGATIVE_TEST_TIMEOUT)).rejects.toThrowError(/No visible elements found/); }); it("'happy case': should access element and ignore empty nested parentProperties, childProperties, prevSiblingProperties and nextSiblingProperties", async () => { const selector = { "elementProperties": { "src": "sap-icon://customer", "parentProperties": { "nextSiblingProperties": ["", {}], "prevSiblingProperties": ["", {}], "siblingProperties": ["", {}], "parentProperties": ["", {}], "childProperties": ["", {}], "ancestorProperties": ["", {}], "descendantProperties": ["", {}] }, } }; await expect(browser.uiControl(selector)).toBeTruthy(); }); it("'happy case': should access element and ignore null/undefined nested parentProperties, childProperties, prevSiblingProperties and nextSiblingProperties", async () => { const selector = { "elementProperties": { "src": "sap-icon://customer", "parentProperties": { "nextSiblingProperties": null, "prevSiblingProperties": null, "siblingProperties": null, "parentProperties": null, "childProperties": null, "ancestorProperties": null, "descendantProperties": null }, "childProperties": { "nextSiblingProperties": undefined, "prevSiblingProperties": undefined, "siblingProperties": undefined, "parentProperties": undefined, "childProperties": undefined, "ancestorProperties": undefined, "descendantProperties": undefined } } }; await expect(browser.uiControl(selector)).toBeTruthy(); }); it("'happy case': should access element and ignore arrayed [null,undefined] nested parentProperties, childProperties, prevSiblingProperties and nextSiblingProperties", async () => { const selector = { "elementProperties": { "src": "sap-icon://customer", "parentProperties": { "nextSiblingProperties": [null, undefined], "prevSiblingProperties": [null, undefined], "siblingProperties": [null, undefined], "parentProperties": [null, undefined], "childProperties": [null, undefined], "ancestorProperties": [null, undefined], "descendantProperties": [null, undefined] } } }; await expect(browser.uiControl(selector)).toBeTruthy(); }); });