import waitForElementState from "./waitForElementState";
import {PageConfigTypes} from "../../../custom-types/pageConfig-types";
import logger from "../../reporting-helpers/logger";
import {browser, $, $$, expect} from '@wdio/globals'
import he from "he";

// export default async function (pageConfig: PageConfigTypes, elementState: string = 'Existing') {
//     await waitForElementState(pageConfig, false, elementState, 5, 1000);
//     let elementText = "";
//
//     const element = await $(pageConfig.selector);
//     // @ts-ignore
//     const refinedHtmlText = await browser.execute((el) => el.textContent, element);
//     elementText = he.decode(refinedHtmlText);
//     logger.info(`Element "${pageConfig.elementKey}" has text "${elementText}"`);
//     return elementText;
// }


export default async function (pageConfig: PageConfigTypes, elementState: string = 'Existing') {
    await waitForElementState(pageConfig, false, elementState, 5, 1000);
    let elementText = "";
    let htmlContent = "";

    if (await $(pageConfig.selector).isDisplayed())
        elementText = await $(pageConfig.selector).getText();
    else {
        htmlContent = await $(pageConfig.selector).getHTML();
        if (htmlContent.trim() == "") {
            const element = $(pageConfig.selector);
            // @ts-ignore
            htmlContent = await browser.execute((el) => el.textContent, element);
        }
        elementText = he.decode(htmlContent);
    }

    logger.info(`Element "${pageConfig.elementKey}" has text "${elementText}"`);
    return elementText;
}