wdio-ui5-service
Version:
WebdriverIO plugin for testing UI5 browser-based apps
48 lines • 2.56 kB
JavaScript
async function clientSide__navTo(sComponentId, sName, oParameters, oComponentTargetInfo, bReplace, browserInstance) {
return await browserInstance.execute(async function wdi5__navTo(sComponentId, sName, oParameters, oComponentTargetInfo, bReplace) {
if (!window.wdi5 || !window.bridge) {
// Local checkForWdi5BrowserReady.js for better performance
const wdi5MissingErr = new Error(`WDI5 is not available in the browser context! window.wdi5: ${!!window.wdi5} | window.bridge: ${!!window.bridge}`);
console.error(wdi5MissingErr); // eslint-disable-line no-console
throw wdi5MissingErr;
}
try {
await window.bridge.waitForUI5(window.wdi5.waitForUI5Options);
}
catch (error) {
return window.wdi5.errorHandling(error);
}
window.wdi5.Log.info(`[browser wdi5] navigation to ${sName} triggered`);
const [CoreRef, ComponentRef, HashChangerRef] = await new Promise((resolve, reject) => {
sap.ui.require(["sap/ui/core/Core", "sap/ui/core/Component", "sap/ui/core/routing/HashChanger"], function (...args) {
resolve(args);
}, reject);
});
const router = window.wdi5Ui5FeaturesAvailable.useGetComponentById
? // @ts-expect-error: Property 'getRouter' does not exist on type 'Component'
ComponentRef.getComponentById(sComponentId).getRouter()
: // @ts-expect-error: Property 'getRouter' does not exist on type 'Component'
CoreRef.getComponent(sComponentId).getRouter();
const hashChanger = window.wdi5Ui5FeaturesAvailable.useOldHashChanger
? // @ts-expect-error: Property 'core' does not exist on type 'typeof ui'
HashChangerRef.getInstance()
: router.getHashChanger();
// create hashChanged promise
const hashChangedPromise = new Promise((resolve) => {
hashChanger.attachEventOnce("hashChanged", () => {
resolve();
});
});
// get component and trigger router
// sName, oParameters?, oComponentTargetInfo?, bReplace?
router.navTo(sName, oParameters, oComponentTargetInfo, bReplace);
// wait for hashChanged event
await hashChangedPromise;
return {
status: 0,
result: hashChanger.getHash()
};
}, sComponentId, sName, oParameters, oComponentTargetInfo, bReplace);
}
export { clientSide__navTo };
//# sourceMappingURL=_navTo.js.map