import getElementText from "../action/getElementText";
import {PageConfigTypes} from "../../../custom-types/pageConfig-types";
import {CustomExpect} from "../../common-helpers/custom-expect";
import pause from "../action/pause";

export default async function (pageConfig: PageConfigTypes, falseCase: boolean, expectedText: string, maxTry: number = 10, ignoreCaseCheck = false) {

    let elementText: string;
    let isElementTextIsAsExpected: boolean = false;
    let counter: number = 0;

    if (ignoreCaseCheck)
        expectedText = expectedText.toLowerCase();

    do {
        elementText = (await getElementText(pageConfig));
        if (ignoreCaseCheck)
            elementText = elementText.toLowerCase();
                   
        if ((falseCase && elementText != expectedText) || (!falseCase && elementText.includes(expectedText)))
            isElementTextIsAsExpected = true
        else {
            await pause(1000);
            counter++;
        }
    } while (!isElementTextIsAsExpected && counter <= maxTry);

    CustomExpect.expectToBeTruthy(isElementTextIsAsExpected == true, `Element "${pageConfig.pageId}.${pageConfig.elementKey}"${falseCase ? ' ' : ' does not '}contain${falseCase ? 's' : ''} expected text "${expectedText}", text found : "${elementText}"`)
}

