function waitForElementVisibility(oTargetElementId) {
		return new Promise((resolve, reject) => {
			const oTargetElement = Element.getElementById(oTargetElementId);
			const oTargetElementDomRef = oTargetElement?.getDomRef();
			let bResolved = false;

			if (Utils.isElementVisible(oTargetElementDomRef)) {
				resolve(oTargetElement);
				return;
			}

			const oObserver = new MutationObserver(() => {
				const observedElement = Element.getElementById(oTargetElementId);
				const oObservedElementDomRef = observedElement?.getDomRef();
				if (Utils.isElementVisible(oObservedElementDomRef)) {
					bResolved = true;
					oObserver.disconnect();
					resolve(observedElement);
				}
			});

			// Start observing the document for changes
			oObserver.observe(document.body, {
				childList: true,
				subtree: true,
				attributes: true
			});

			// Set a timeout to reject the promise and clean up the observer if the element is not found
			setTimeout(() => {
				if (!bResolved) {
					oObserver.disconnect();
					reject(new Error(`Element with ID "${oTargetElementId}" not found`));
				}
			}, 700);
		});
	}
@class Constructor for a new sap.ui.rta.util.guidedTour.GuidedTour
@extends sap.ui.base.ManagedObject
@author SAP SE
@version ${version}
@constructor
@since 1.136
@private
@ui5-restricted sap.ui.rta