/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/automacao-core-playwright@5.12.11/dist/bundled.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
!function(a,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((a="undefined"!=typeof globalThis?globalThis:a||self)["automacao-core-playwright"]={})}(this,(function(a){"use strict";const t=require("moment"),{expect:e}=require("@playwright/test"),{addDays:o,isWeekend:i,format:r}=require("date-fns");require("dotenv").config();let s=0;const n='iframe[name="ci"]';class l{constructor(a,t){this.page=a,this.frame=t}async login(a){await this.page.goto("/");const t=this.page.getByPlaceholder("Senha"),e=this.page.getByPlaceholder("usuario@dominio.com.br");await e.fill(a.email),await this.page.getByRole("button",{name:"Próximo"}).click(),await t.fill(a.senha),await this.page.locator('[id="loginbtn"]').click(),console.log(`Usuário ${a.email} logado com sucesso`)}async navegarParaPagina(a){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,n=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null;const l=`button[id="menu-item-${a}"]`;await this.page.waitForSelector(l,{timeout:6e4}),await this.page.locator(l).click({force:!0});if(await this.page.locator("#apps-menu-sublabel").filter({hasText:/Menu|Menú/}).count()>0&&(s=0),0!=s){do{const a='[id="apps-menu-sublabel"]';await this.page.waitForSelector(a,{timeout:6e4}),await this.page.locator(a).click({force:!0}),s--}while(s>1);s=0}await this.navegarSeExistir(t),await this.navegarSeExistir(e),await this.navegarSeExistir(o),await this.navegarSeExistir(i),await this.navegarSeExistir(r),await this.navegarSeExistir(n)}async navegarSeExistir(a){if(a){const t=`a[aria-label="${a}"], a[aria-label="Grupo de menus ${a}"]`;await this.page.locator(t).scrollIntoViewIfNeeded(),await this.page.waitForSelector(t,{timeout:6e4}),await this.page.locator(t).click({force:!0}),s++}}async navegaMenu(a){for(const t of a){const a=`//span[text()="${t}"]/ancestor::a | //a[contains(@aria-label, "${t}")]`;if(await this.page.locator(a).count()>0){await this.page.waitForSelector(a,{timeout:6e4}),await this.page.locator(a).click({force:!0});break}}}async goToMultiplePagePlatform(a){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];await this.page.waitForSelector("#logo-preview-desktop",{timeout:6e4}),await this.page.locator("#logo-preview-desktop").click({force:!0});const o=`button[id="menu-item-${a}"]`;if(await this.page.waitForSelector(o,{timeout:6e4}),await this.page.locator(o).click({force:!0}),await this.page.waitForSelector("#apps-menu-level-label",{timeout:6e4}),await this.page.locator("#apps-menu-level-label").click({force:!0}),t){const a=Array.isArray(t)?t:[t];await this.navegaMenu(a)}for(const a of e)await this.navegaMenu(a)}async encontrarValorNaTabela(a,t){const e=await this.page.$(n),o=await e.contentFrame();await o.waitForSelector(a,{timeout:6e4});const i=await o.locator(a).elementHandles();for(let a=0;a<i.length;a++){const e=i[a],o=await e.$$("td");for(let a=0;a<o.length;a++){if(await o[a].innerText()===t)return e}}return null}async verificaElementoDesabilitado(a,t){const o=await this.page.frame({name:"ci"}),i=await o.$void(a,(a=>a.hasAttribute("disabled")));t?(e(i).toBe(!0),console.log("Botão ou campo desabilitado")):(e(i).toBe(!1),console.log("Botão ou campo esta habilitado"))}async limparCampo(a){const t=await this.page.frame({name:"ci"});await t.locator(a).click(),await t.locator(a).press("Control+A"),await t.locator(a).press("Backspace")}formataDataAmericano(a){return t(a,"DD/MM/YYYY").format("YYYY-MM-DD")}async validarFeriados(a){const t=await this.formataDataAmericano(a),e=new Date(`"${t}"`),o=["01/01","21/04","01/05","02/09","07/09","12/10","02/11","15/11","25/12"];let i,r=!0;for(;r;){r=!1;for(let a=0;a<3;a++){const t=e.getDate()+a,s=e.getMonth()+1;if(i=this.configurarDiaMes(t,s),o.includes(i)){e.setDate(e.getDate()+3),r=!0;break}}}return i=this.configurarDiaMes(e.getDate(),e.getMonth()+1),`${i}/${e.getFullYear()}`}async validarDiaUtilFerias(a){let t=await this.validarFeriados(a);t=await this.page.feriasPage.validarVesperaFeriados(t);const e=await this.formataDataAmericano(t);let s=new Date(e);if(i(s)||5===s.getDay())for(;i(s)||1!==s.getDay();)s=o(s,1);return r(s,"dd/MM/yyyy")}configurarDiaMes(a,t){let e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const o=new Date(0,t-1,a);return r(o,e?"MM/dd":"dd/MM")}async validaSemMsgErroEmTela(){let a=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];const t=this.frame||this.page.frameLocator(n),o=["Ocorreu um erro inesperado no servidor:","Oops","Erro na busca das informações.","expection","undefined"];a&&o.push("Erro"),await Promise.all(o.map((async a=>{await e(t.getByText(a,{exact:!1})).toBeHidden()})))}async validaTraducaoComunsEmTela(){const a=this.frame||this.page.frameLocator(n);await Promise.all([...["erpx_","erp_","crmx_","hcm.","hcm_"].map((async t=>{await e(a.getByText(t)).toBeHidden()})),...["add","edit","cancel","delete","save"].map((async t=>{await e(a.getByText(t,{exact:!0})).toBeHidden()}))])}async validaTraducaoEmTela(){const a=this.frame||this.page.frameLocator(n);await Promise.all([/hcm[._]/i,/hcmx[._]/i,/sam[._]/i,/moods[._]/i,/\{\{[^}]{0,50}\}\}/g].map((async t=>{const o=a.locator("body").getByText(t);await o.count()>0&&await o.allTextContents(),await e(o,`Validação da tradução: ${t.source.replace("\\b","")}     `).toHaveCount(0,{timeout:3e3})})))}obterDataPtBR(){let a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:new Date;const i=new Date(o);i.setFullYear(i.getFullYear()+e),i.setMonth(i.getMonth()+t),i.setDate(i.getDate()+a);return`${String(i.getDate()).padStart(2,"0")}/${String(i.getMonth()+1).padStart(2,"0")}/${i.getFullYear()}`}async fecharPopupNotificacoes(){await this.page.locator("app-notification-alert").getByRole("emphasis").count()>0&&await this.page.locator("app-notification-alert").getByRole("emphasis").click({force:!0})}async validarToastSucesso(){let a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;const t=(await this.page.frameLocator(n)).locator(".ui-toast-message-success");await e(t).toBeVisible({timeout:3e3}),await e(t.locator(".ui-toast-summary")).toHaveText("Sucesso"),a&&await e(t.locator(".ui-toast-detail")).toHaveText(a)}}const c=require("moment"),{ptBR:d}=require("date-fns/locale"),{addDays:g,addMonths:w,addYears:p,parse:u,format:h,addHours:m,addMinutes:y,addSeconds:f}=require("date-fns");require("dotenv").config();const{expect:v}=require("@playwright/test"),b="ControlOrMeta+a",B="Backspace",x="Enter",E="Tab";const M=require("fs"),T=require("pdf-parse"),{expect:D}=require("@playwright/test");const{expect:$}=require("@playwright/test");class S{constructor(a){this.page=a,this.locatorOverlayState=this.page.locator('[id*="loading-state"][id*="overlay"], .overlay, .loader').first(),this.locatorPrimeiraLinhaTr=this.page.locator("tbody.ui-table-tbody tr.ui-selectable-row").first(),this.locatorPrimeiraLinhaIcone=this.locatorPrimeiraLinhaTr.locator("i"),this.locatorIconeExpansaoPrimeiraLinhaTd=this.locatorPrimeiraLinhaTr.locator("td").first(),this.locatorLinhaExpandidaTr=this.page.locator("tr.sds-expanded-row")}async esperarCarregamentoSpinners(){for(let a=0;a<10;a++){const a=this.page.locator(".spinner"),t=await a.all().catch((()=>[]));if(!(await Promise.all(t.map((a=>a.isVisible()))).catch((()=>[]))).includes(!0))break;await new Promise((a=>setTimeout(a,1e3)))}const a=this.page.locator(".spinner"),t=await a.all();for(const a of t)await $(a).toBeHidden()}async aguardarCarregamento(){const a=this.page.locator(".spinner");await a.count()>0&&(await $(a.first()).toBeVisible({timeout:5e3}),await Promise.all((await a.all()).map((a=>$(a).toBeHidden({timeout:15e3})))))}async expandirFiltroNotificacao(){0===await this.page.getByRole("button",{name:"Aplicar"}).count()&&await this.page.getByRole("button",{name:"Expandir Filtros"}).click()}async expandirTodasAbas(){const a=this.page.getByRole("tab",{name:""});for(;await a.first().isVisible();)await a.first().click(),await new Promise((a=>setTimeout(a,1e3)))}async expandirPrimeiraLinhaTabelaExpandida(){let a=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];await this.locatorOverlayState.waitFor({state:"hidden",timeout:5e3}).catch((()=>{})),await $(this.locatorPrimeiraLinhaTr).toBeVisible();const t=(await this.locatorPrimeiraLinhaIcone.getAttribute("class")).includes("fa-minus");a&&!t&&(await this.locatorIconeExpansaoPrimeiraLinhaTd.click(),await $(this.locatorLinhaExpandidaTr).toBeVisible()),!a&&t&&(await this.locatorIconeExpansaoPrimeiraLinhaTd.click(),await $(this.locatorLinhaExpandidaTr).toBeHidden())}}const{expect:P}=require("@playwright/test");a.DataUtils=l,a.FormUtils=class{constructor(a,t){this.page=t||a,this.dataUtils=new l(a,t)}async expandirFiltro(){let a=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=arguments.length>1?arguments[1]:void 0;const e=this.page.locator('[id*="loading-state"][id*="overlay"], .overlay, .loader').first();let o;await e.waitFor({state:"hidden",timeout:5e3}).catch((()=>{})),o=t||this.page.locator('[role="tab"], [role="button"]').filter({has:this.page.locator(".pi-plus, .pi-minus")}).first(),await v(o).toBeVisible();const i=a?".pi-minus":".pi-plus",r=a?".pi-plus":".pi-minus",s=await o.locator(i).isVisible(),n=await o.locator(r).isVisible();!s&&n&&(await o.click(),await v(o.locator(i)).toBeVisible())}async fillFieldSLookup(a,t,e){const o=this.page.locator(a);await o.waitFor({state:"visible"}),await o.scrollIntoViewIfNeeded(),await o.click(),await o.fill(t),e?(await v(this.page.getByRole("option",{name:e})).toBeVisible(),await this.page.getByRole("option",{name:e}).click({force:!0})):(await v(this.page.getByRole("option",{name:t}).first()).toBeVisible(),await this.page.getByRole("option",{name:t}).first().click({force:!0}))}async fillFieldDataHora(a,t){await this.page.locator(a).click(),await this.page.locator(a).press(b),await this.page.locator(a).press(B),await this.page.locator(a).fill(t),await this.page.locator(a).press(x),await this.page.locator(a).press(E)}async fillFieldPDropdown(a,t){await this.page.locator(a).click(),await this.page.getByText(t,{exact:!0}).first().click()}async fillField(a,t){const e=this.page.locator(a);await v(e).toBeVisible(),await this.page.locator(a).click({force:!0}),await e.fill(t),await e.press(E)}async typeFieldLabel(a,t){const e=this.page.getByLabel(a);await v(e).toBeVisible(),await e.scrollIntoViewIfNeeded(),await e.click(),await e.press(b),await e.press(B),await e.type(t),await e.press(E)}async typeFieldLocator(a,t){const e=this.page.locator(a);await v(e).toBeVisible(),await e.scrollIntoViewIfNeeded(),await e.click(),await e.press(b),await e.press(B),await e.type(t),await e.press(E)}async typeFieldLocatorDelay(a,t){const e=this.page.locator(a);await e.waitFor({state:"visible"}),await e.isEnabled(),await e.click({force:!0}),await new Promise((a=>setTimeout(a,300))),await e.press(b),await e.press(B),await new Promise((a=>setTimeout(a,300))),await e.type(t,{delay:400}),await new Promise((a=>setTimeout(a,500)));const o=await e.inputValue();if(o.replace(/\D/g,"")!==t.replace(/\D/g,""))throw new Error(`Falha ao inserir o valor. Esperado : ${t}, Obtido : ${o}`);await e.press("Tab")}async apagarValorLocator(a){const t=this.page.locator(a);await this.page.locator(a).click({force:!0}),await t.press(b),await t.press(B),await t.press(E)}async pDropdownSelect(a,t){await v(a).toBeVisible(),await a.scrollIntoViewIfNeeded(),await a.click(),await v(this.page.getByRole("option",{name:t})).toBeVisible(),await this.page.getByRole("option",{name:t}).click()}async pCalendar(a,t){await v(a).toBeVisible(),await a.scrollIntoViewIfNeeded(),await a.click(),await a.fill(t),await a.press(x)}async validarTraducaoEErroComponenteDropdownByLabel(a,t){const e=this.page.locator(`label:has-text("${a}")`);let o;if("dropdown"===t){o=this.page.locator("div").filter({has:e}).filter({hasNot:this.page.locator("div").filter({has:e})}).locator(".ui-dropdown-trigger").first()}"autocomplete"===t&&(o=e.first().locator("..").locator("button.ui-autocomplete-dropdown")),"autocomplete-enum"===t&&(o=e.first().locator("..").getByRole("button",{name:"ui-btn"})),await o.click(),await v(this.page.locator("ul.ui-dropdown-items li, ul.ui-autocomplete-items li").first()).toBeVisible(),await this.dataUtils.validaSemMsgErroEmTela(),await this.dataUtils.validaTraducaoEmTela(),await o.press("Escape")}async fillESelectAutocompleteInputByLabel(a,t){const e=this.page.locator(`label:has-text("${a}")`).first().locator("..").locator("input.ui-inputtext");await e.fill(t);const o=this.page.getByText(`${t}`);await v(o).toBeVisible(),await o.click()}async fillFieldSLookupMultiplosRegistros(a,t){for(const e of t)await v(a).toBeVisible(),await a.scrollIntoViewIfNeeded(),await a.click(),await a.fill(e),await v(this.page.getByRole("option",{name:e}).first()).toBeVisible(),await this.page.getByRole("option",{name:e}).first().click({force:!0})}async fillFieldPMultiselect(a,t){for(const e of t)await v(a).toBeVisible(),await a.scrollIntoViewIfNeeded(),await a.click(),await v(this.page.getByRole("listitem",{name:e})).toBeVisible(),await this.page.getByRole("listitem",{name:e}).click();await a.click()}async validarTraducaoEErroComponenteSelectByID(a){const t=this.page.locator(`ng-select#${a}`);await t.locator(".ui-select-toggle").click();const e=t.locator("ul.ui-select-choices li");await v(e.first()).toBeVisible(),await this.dataUtils.validaSemMsgErroEmTela(),await this.dataUtils.validaTraducaoEmTela(),await e.first().press("Escape")}async validarTraducaoEErroModalLookupPorLabel(a,t){const e=this.page.locator(`label:has-text("${a}")`).locator("..").locator("button.button-addon");await v(e).toBeVisible(),await e.click();const o=this.page.getByText(`${t}`);await v(o).toBeVisible(),await this.dataUtils.validaSemMsgErroEmTela(),await this.dataUtils.validaTraducaoEmTela();const i=this.page.locator(".s-lookup-modal .ui-dialog-titlebar-close");await v(i).toBeVisible(),await i.click()}async validarTraducaoEErroCalendarioPorLabel(a){const t=this.page.locator(`label:text-is("${a}")`);await v(t).toBeVisible();const e=await t.getAttribute("for"),o=this.page.locator(`#${e}`).locator("..").locator("button.ui-datepicker-trigger, button.ui-calendar-button");await v(o).toBeVisible(),await o.click();const i=this.page.locator(".ui-datepicker:visible");await v(i).toBeVisible(),await this.dataUtils.validaSemMsgErroEmTela(),await this.dataUtils.validaTraducaoEmTela(),await o.click(),await v(i).toBeHidden()}async validarTraducaoEErroModalLookupPorLocator(a,t){const e=this.page.locator(".s-lookup-modal"),o=e.locator(".ui-dialog-titlebar-close"),i=this.page.getByRole("dialog",{name:t}).first();await v(a).toBeVisible(),await a.click(),await v(e).toBeVisible(),await v(i).toBeVisible(),await this.dataUtils.validaSemMsgErroEmTela(),await this.dataUtils.validaTraducaoComunsEmTela(),await v(o).toBeVisible(),await o.click()}},a.FormatDate=class{constructor(a){this.page=a}pegaDataAtualComBarrasMesDiaAno(){return c().format("MM/DD/YYYY")}pegaDataComBarras(){let a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,o=arguments.length>3&&void 0!==arguments[3]&&arguments[3],i=new Date;return i=g(i,a),i=w(i,t),i=p(i,e),h(i,o?"yyyy-MM-dd":"dd/MM/yyyy")}formataDataBrasil(a){return c(a,"YYYY-MM-DD").format("DD/MM/YYYY")}transformarDataAtualExtenso(a){const t=new Date;return h(t,"extenso"===a?"d 'de' MMMM 'de' yyyy":"MMMM yyyy",{locale:d})}transformarDataExtenso(a,t){const e=u(a,"dd/MM/yyyy",new Date);if("extenso"===t)return h(e,"d 'de' MMMM 'de' yyyy",{locale:d});const o=h(e,"MMMM yyyy",{locale:d});return o.replace(/^(.)/,o[0].toUpperCase())}getCurrentDateTime(){return(new Date).toISOString().split(".")[0]+"Z"}pegaDataHoraAtualComBarras(){let{dias:a=0,meses:t=0,anos:e=0,horas:o=0,minutos:i=0,segundos:r=0,formato:s=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=new Date;n=g(n,a),n=w(n,t),n=p(n,e),n=m(n,o),n=y(n,i),n=f(n,r);return h(n,s?"yyyy-MM-dd HH:mm:ss":"dd/MM/yyyy HH:mm:ss")}formataData(){let a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Date;try{const e=t instanceof Date?t:new Date(t);if(isNaN(e.getTime()))throw new Error(`Data inválida: ${t}`);const o={1:"dd/MM/yyyy",2:"yyyy/MM/dd",3:"dd-MM-yyyy",4:"MM/dd/yyyy",5:"yyyy-MM-dd",6:"MM/yyyy",7:"yyMMddHHmmss",8:"dd/yy",9:"dd/yyyy",10:"yyyy-MM-dd HH:mm:ss",11:"dd/MM/yyyy HH:mm:ss",12:"yyyy/MM/dd HH:mm:ss",13:"MM/dd/yyyy HH:mm:ss",14:"dd-MM-yyyy HH:mm:ss",15:"yyyyMMdd",16:"ddMMyyyy",17:"MM/yy",18:"yyyyMMddHHmmss",19:"ddMMyyyyHHmmss",20:"yyyy-MM-dd'T'HH:mm:ssXXX",21:"HH:mm:ss:SSS",22:"dd-MM-yyyy HH:mm:ss:SSS"};if(!o[a])throw new Error(`Formato inválido: ${a}.`);return h(e,o[a])}catch(a){throw new Error(`Erro ao formatar data: ${a.message}`)}}geraDataPersonalizada(){let a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;try{let i=new Date;const r=(a,t)=>"string"==typeof a&&(a.startsWith("+")||a.startsWith("-"))?(i=t(i,parseInt(a,10)),null):a||null,s=r(e,p),n=r(t,w),l=r(a,g),c=new Date(null!==s?s:i.getFullYear(),null!==n?n-1:i.getMonth(),null!==l?l:i.getDate());if(isNaN(c.getTime()))throw new Error("A combinação de parâmetros resultou em uma data inválida.");return this.formataData(o,c)}catch(a){throw new Error(`Erro ao gerar data personalizada: ${a.message}`)}}getISODateWithOffset(){let{days:a=0,months:t=0,years:e=0,hours:o=0}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=new Date;return a&&(i=g(i,a)),t&&(i=w(i,t)),e&&(i=p(i,e)),o&&(i=m(i,o)),i.toISOString()}async getISODateWithOffsetHours(a){const t=new Date;return t.setHours(t.getHours()+a),t.toISOString()}obterHoraComOffset(){let a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const e=new Date;e.setHours(e.getHours()+a),e.setMinutes(e.getMinutes()+t);return`${e.getHours().toString().padStart(2,"0")}:${e.getMinutes().toString().padStart(2,"0")}`}},a.NavigationUtils=S,a.NumberTools=class{formatNumberWithDot(a){return a.toLocaleString("pt-BR")}gerarNumeroSequencialComData(){const a=new Date,t={ano:()=>a.getFullYear().toString().slice(-2),mes:()=>(a.getMonth()+1).toString().padStart(2,"0"),dia:()=>a.getDate().toString().padStart(2,"0"),hora:()=>a.getHours().toString().padStart(2,"0"),min:()=>a.getMinutes().toString().padStart(2,"0"),seg:()=>a.getSeconds().toString().padStart(2,"0"),mil:()=>a.getMilliseconds().toString().padStart(3,"0")};for(var e=arguments.length,o=new Array(e),i=0;i<e;i++)o[i]=arguments[i];return(o.length>0?o:["mes","dia","hora","min","seg"]).map((a=>t[a]?t[a]():"")).join("")}geradorNumeroAleatorio(){let a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:999999;const e=new Uint32Array(1);crypto.getRandomValues(e);return(a+e[0]%(t-a+1)).toString()}},a.PlatformUtils=class{constructor(a){this.page=a,this.navigationUtils=new S(a)}async acessaTelaNotificacoes(){const a=this.page.locator("s-breadcrumb").getByRole("heading",{name:"Notificações"},{exact:!0}),t=this.page.getByText("Todas as notificações",{exact:!0});await this.page.goto("https://platform-homologx.senior.com.br/tecnologia/platform/notifications-hub/#/notifications/list"),await P(a).toBeVisible(),await P(t).toBeVisible()}async pesquisarNotificacao(a){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:30;const e=this.page.getByRole("gridcell",{name:a.assunto},{exact:!0}),o=this.page.getByRole("button",{name:"Limpar",exact:!0}),i=this.page.locator(".ui-chkbox-box").first(),r=this.page.getByPlaceholder("Digite o Assunto/Conteúdo"),s=this.page.getByRole("button",{name:"Aplicar"}),n=this.page.getByText("há poucos segundos").first();let l=!1;await this.acessaTelaNotificacoes(),await this.navigationUtils.expandirFiltroNotificacao();for(let c=0;c<=t&&!l;c++){await P(o).toBeVisible(),await o.click(),await P(i).toBeVisible(),await i.click(),await r.fill(a.assunto),await P(s).toBeVisible(),await s.click(),await new Promise((a=>setTimeout(a,1e3)));if(1===await e.first().count()?await P(e.first()).toBeVisible():await P(e.first()).toBeHidden(),l=await n.isVisible()||await this.page.getByText("há um minuto").isVisible(),c===t)throw new Error(`A notificação não apareceu após ${t} tentativas`)}if(a.conteudo){const t=this.page.getByRole("row",{name:a.conteudo},{exact:!0}).first();if(!(await t.innerText()).includes(a.conteudo))throw new Error("Erro na validação da notificação");console.log("Notificação validada com sucesso!")}else{const t=this.page.getByRole("row",{name:a.assunto},{exact:!0}).first();if(!(await t.innerText()).includes(a.assunto))throw new Error("Erro na validação da notificação");console.log("Notificação validada com sucesso!")}}async downloadNotificacaoGenerico(a){const t=this.page.getByRole("link",{name:`${a.link}`});await this.pesquisarNotificacao(a,60),await this.page.getByRole("row",{name:`${a.assunto}`}).first().click(),await P(t).toHaveCount(1),await P(t).toBeVisible();const e=await t.getAttribute("href");await this.page.evaluate((a=>window.location.href=a),e);const o=await this.page.waitForEvent("download");return await o.saveAs(a.caminhoDownload+o.suggestedFilename()),o.suggestedFilename()}async exportarDados(a,t){const e=this.page.locator("s-table-paging").getByRole("button"),o=this.page.getByRole("menuitem",{name:"Exportar página atual"}),i=this.page.getByRole("menuitem",{name:"Exportar apenas os selecionados"}),r=this.page.getByRole("menuitem",{name:"Exportar todas as páginas"}),s=this.page.locator("p-toast").getByRole("alert");if(await P(e).toBeVisible(),await e.click(),"Pagina Atual"===a){await P(o).toBeVisible();const a=this.page.waitForEvent("download");await o.click();const e=await a;return await e.saveAs(t+e.suggestedFilename()),e.suggestedFilename()}if("Selecionados"===a){await P(i).toBeVisible();const a=this.page.waitForEvent("download");await i.click();const e=await a;return await e.saveAs(t+e.suggestedFilename()),e.suggestedFilename()}return"Todas as páginas"===a?(await r.click(),await P(s).toContainText("Você receberá uma notificação com link para download do arquivo gerado"),await P(s).toBeHidden(),null):null}},a.ValidationUtils=class{constructor(a){this.page=a}async validarQuantidadeDeElementosComRetry(a,t){for(let e=0;e<=10;e++){const o=await a.count();if(o===t)return void console.log(`Validação bem-sucedida: ${o} elementos encontrados na tentativa ${e+1}.`);await new Promise((a=>setTimeout(a,1e3)))}const e=await a.count();throw new Error(`Após 10 tentativas, esperado ${t} elementos, mas encontrou ${e}.`)}async validacaoTextoEmTela(a){if(arguments.length>1&&void 0!==arguments[1]&&arguments[1])for(const t in a){const e=await this.page.getByText(a[t]).count();for(let o=0;o<e;o++)await D(this.page.getByText(a[t]).nth(o),{exact:!0}).toBeHidden()}else if("string"!=typeof a)for(const t in a){const e=await this.page.getByText(a[t]).count();for(let o=0;o<e;o++)await D(this.page.getByText(a[t]).nth(o),{exact:!0}).toBeVisible()}else await D(this.page.getByText(a)).toBeVisible()}async validarPdfComTextoOrdenado(a,t){let e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;const o=require("fs"),i=require("pdf-parse"),r=o.readFileSync(a);let s=(await i(r)).text.replace(/\s+/g," ").trim();if(e){const a=new RegExp(`${e}\\s+([\\s\\S]*?)(?=\\n[A-Z][A-Z\\s]{3,}|$)`,"i"),t=s.match(a);if(!t)throw new Error(`❌ Seção "${e}" não encontrada no PDF`);s=t[1].trim(),console.log(`📄 Seção "${e}" isolada com sucesso (${s.length} caracteres)`),console.log(`🪶 Preview da seção: "${s.slice(0,300)}..."`)}const n=[];for(const a of t){const t=s.indexOf(a);if(-1===t)throw new Error(`❌ Texto "${a}" não encontrado na${e?` seção "${e}"`:""}`);n.push({texto:a,posicao:t})}for(let a=0;a<n.length-1;a++)if(n[a].posicao>=n[a+1].posicao)throw new Error(`❌ Ordem incorreta: "${n[a].texto}" (posição ${n[a].posicao}) deveria aparecer antes de "${n[a+1].texto}" (posição ${n[a+1].posicao})`);console.log("✅ Validação concluída com sucesso"+(e?` na seção "${e}"`:""))}async baixarPdfNovaAbaBlank(a,t){let e=null;await this.page.evaluate((()=>{window.__blobCapturado=null;const a=URL.createObjectURL;URL.createObjectURL=function(t){return console.log("[INTERCEPTOR] Blob detectado:",t.type,t.size),"application/pdf"===t.type&&(window.__blobCapturado=t),a.call(URL,t)};const t=window.open;window.open=function(a){console.log("[INTERCEPTOR] window.open chamado com URL:",a),a&&a.startsWith("blob:")&&(window.__blobUrl=a);for(var e=arguments.length,o=new Array(e>1?e-1:0),i=1;i<e;i++)o[i-1]=arguments[i];return t.call(window,a,...o)}}));const[o]=await Promise.all([this.page.context().waitForEvent("page"),t.click({force:!0})]);console.log(`📍 Nova aba aberta, URL inicial: ${o.url()}`);try{await this.aguardarEstabilizacao(1e3);const a=await this.page.evaluate((async()=>{if(window.__blobCapturado){console.log("[CAPTURA] Blob encontrado no interceptor");const a=await window.__blobCapturado.arrayBuffer();return Array.from(new Uint8Array(a))}return null}));a&&(e=Buffer.from(a),console.log(`✅ PDF capturado via interceptação (${e.length} bytes)`))}catch(a){console.log(`⚠️ Erro ao capturar via interceptação: ${a.message}`)}if(!e){console.log("⏳ Tentando capturar da nova aba...");let a=0;const t=30;let i=o.url();for(;!i.startsWith("blob:")&&a<t;)await this.aguardarEstabilizacao(1e3),i=o.url(),a++,console.log(`📍 [${a}/${t}] URL: ${i}`),5===a&&"about:blank"===i&&(console.log("🔄 Forçando reload da página..."),await o.reload({waitUntil:"domcontentloaded"}).catch((()=>{})));if(!i.startsWith("blob:"))throw await o.close(),new Error(`URL não mudou para blob após ${t} tentativas. URL final: ${i}`);{console.log(`✅ Blob URL detectada: ${i}`);const a=await o.evaluate((async()=>{const a=await fetch(window.location.href),t=await a.arrayBuffer();return Array.from(new Uint8Array(t))}));e=Buffer.from(a),console.log(`✅ PDF capturado da nova aba (${e.length} bytes)`)}}await o.close();const i=require("fs").promises,r=require("path"),s=`pdfBlank_${(new Date).toISOString().replace(/[:.]/g,"-").slice(0,-5)}.pdf`,n=r.join(a,s);return await i.mkdir(a,{recursive:!0}),await i.writeFile(n,e),console.log(`📄 PDF salvo com sucesso: ${n}`),n}async validarArquivoComArray(a,t){let e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];try{if(!Array.isArray(t))throw new Error("O array de strings não está definido ou não é um array.");const o=M.readFileSync(a),i=t.map(((a,t)=>({string:a,encontrado:o.includes(a),index:t})));console.log(i);const r=i.filter((a=>!a.encontrado));if(r.length>0){if(!e)throw new Error(`As seguintes strings NÃO foram encontradas no Arquivo : ${r.map((a=>a.string)).join(", ")}`);console.log(`Strings "${r.map((a=>a.string)).join(", ")}" não encontrada no Arquivo.`)}return console.log(i),i.forEach((a=>{if(a.encontrado){if(e)throw new Error(`String "${a.string}" encontrada no Arquivo.`);console.log(`String "${a.string}" encontrada no Arquivo.`)}})),i}catch(a){throw new Error(`Erro ao validar Arquivo: ${a.message}`)}}async validarOcorrenciaUnicaParaCadaString(a,t){try{if(!Array.isArray(t)||0===t.length)throw new Error("Você deve fornecer um array de strings não vazio.");const e=M.readFileSync(a),o=(await T(e)).text,i=t.map((a=>({string:a,ocorrencias:o.split(a).length-1}))),r=i.filter((a=>1!==a.ocorrencias));if(r.length>0){const a=r.map((a=>0===a.ocorrencias?`❌ A string "${a.string}" não foi encontrada no arquivo.`:`❌ A string "${a.string}" foi encontrada ${a.ocorrencias} vezes no arquivo (esperado: 1).`));throw new Error(`Erros encontrados:\n${a.join("\n")}`)}return console.log("✅ Todas as strings foram encontradas exatamente uma vez no PDF."),i}catch(a){throw new Error(`Erro ao validar ocorrência única das strings: ${a.message}`)}}async validarPdfComArray(a,t){let e,o=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:3;if(!Array.isArray(t)||0===t.length)throw new Error("Array de strings é obrigatório e deve conter pelo menos um item");if(!a||"string"!=typeof a)throw new Error("Caminho do arquivo PDF é obrigatório");for(let r=1;r<=i;r++)try{console.log(`📄 Tentativa ${r}/${i}: Validando PDF ${a}`),this.validarArquivoPdf(a),1===r&&await this.aguardarEstabilizacao(2e3);const e=await this.extrairTextoPdf(a),s=this.validarStringsNoTexto(t,e);return this.processarResultados(s,o),console.log(`✅ PDF validado com sucesso na tentativa ${r}`),s}catch(a){e=a,console.log(`❌ Erro na tentativa ${r}: ${a.message}`);if(!this.isPdfError(a))throw a;if(r===i)break;const t=3e3*r;console.log(`⏳ Aguardando ${t/1e3}s antes da próxima tentativa...`),await this.aguardarEstabilizacao(t)}throw new Error(`Falha ao validar PDF após ${i} tentativas. Último erro: ${e.message}`)}validarArquivoPdf(a){if(!M.existsSync(a))throw new Error(`Arquivo PDF não encontrado: ${a}`);const t=M.statSync(a);if(0===t.size)throw new Error(`Arquivo PDF está vazio: ${a}`);console.log(`📊 Tamanho do arquivo: ${t.size} bytes`);const e=M.readFileSync(a);if(!e.toString("utf8",0,8).startsWith("%PDF-"))throw new Error("Arquivo não possui header PDF válido");if(e.length<1024)throw new Error("Arquivo muito pequeno para ser um PDF válido")}async extrairTextoPdf(a){try{const t=M.readFileSync(a);return(await T(t)).text||""}catch(a){throw new Error(`Erro ao extrair texto do PDF: ${a.message}`)}}validarStringsNoTexto(a,t){return a.map(((a,e)=>({string:a,encontrado:t.includes(a),index:e})))}processarResultados(a,t){console.log("📋 Resultados da validação:",a);const e=a.filter((a=>a.encontrado)),o=a.filter((a=>!a.encontrado));if(t){if(e.length>0){const a=e.map((a=>a.string)).join(", ");throw new Error(`Strings que não deveriam existir foram encontradas: ${a}`)}console.log("✅ Nenhuma das strings foi encontrada no PDF (como esperado)")}else{if(o.length>0){const a=o.map((a=>a.string)).join(", ");throw new Error(`Strings obrigatórias não encontradas no PDF: ${a}`)}console.log(`✅ Todas as ${e.length} strings foram encontradas no PDF`)}}isPdfError(a){const t=a.message.toLowerCase();return t.includes("bad xref entry")||t.includes("invalid pdf")||t.includes("pdf")||t.includes("corrupt")}async aguardarEstabilizacao(a){return new Promise((t=>setTimeout(t,a)))}async _retryElementCount(a){let t=await a();for(let e=0;e<=10&&0===t;e++)await new Promise((a=>setTimeout(a,1e3))),t=await a();return t}async validarDadosTabela(a){for(const t of a){const a=await this._retryElementCount((()=>this.page.getByText(t,{exact:!0}).count()));if(0===a)throw new Error(`Elemento ${t} não encontrado na tabela`);if(1===a)await D(this.page.getByText(t,{exact:!0}).first()).toBeVisible();else for(let e=0;e<a;e++)await D(this.page.getByText(t,{exact:!0}).nth(e)).toBeVisible()}}async validarGridCell(a){for(const t of a){const a=await this._retryElementCount((()=>this.page.getByRole("gridcell",{name:t},{exact:!0}).count()));if(0===a)throw new Error(`Elemento ${t} não encontrado na grid`);if(1===a)await D(this.page.getByRole("gridcell",{name:t}).first(),{exact:!0}).toBeVisible();else for(let e=0;e<a;e++)await D(this.page.getByRole("gridcell",{name:t}).nth(e),{exact:!0}).toBeVisible()}}async validarExclusaoGridCell(a){for(const t of a)await D(this.page.getByRole("gridcell",{name:t,exact:!0})).toBeHidden()}async validarCellsOcultas(a){const t=a.map((a=>D(this.page.getByRole("cell",{name:a,exact:!0})).toBeHidden()));await Promise.all(t)}async validarGrid(a){for(const t of a){const a=await this._retryElementCount((()=>this.page.getByRole("cell",{name:t},{exact:!0}).count()));if(0===a)throw new Error(`Elemento ${t} não encontrado na grid`);if(1===a)await D(this.page.getByRole("cell",{name:t},{exact:!0}).first()).toBeVisible();else for(let e=0;e<a;e++)await D(this.page.getByRole("cell",{name:t},{exact:!0}).nth(e)).toBeVisible()}}async baixarPdfNovaTela(a,t){const e=await this.page.request.get(a);await M.promises.writeFile(t,await e.body())}},Object.defineProperty(a,"__esModule",{value:!0})}));
//# sourceMappingURL=/sm/ae2fc8da633253097435941a4a64c4febb91905d0fab63bdcc09470b6427f957.map