@acutis/cli 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/{DB7GBG_m.js → 2nD-p2HC.js} +1 -1
  3. package/.output/public/_nuxt/{Bs931Wcm.js → B9s6bjC6.js} +1 -1
  4. package/.output/public/_nuxt/{DKtXkDi_.js → BNt3M20G.js} +1 -1
  5. package/.output/public/_nuxt/{YTBYxWmy.js → BVORrxe1.js} +1 -1
  6. package/.output/public/_nuxt/BWJi3RB7.js +7 -0
  7. package/.output/public/_nuxt/BZKoKeJ4.js +1 -0
  8. package/.output/public/_nuxt/{DMFeBIkq.js → BdD531YY.js} +1 -1
  9. package/.output/public/_nuxt/Bim2Ilco.js +1 -0
  10. package/.output/public/_nuxt/{B1M4anPy.js → BormXq2m.js} +1 -1
  11. package/.output/public/_nuxt/{B6XOqJ2u.js → Bv4T7S6_.js} +1 -1
  12. package/.output/public/_nuxt/{DjT2EspM.js → BwcOmYtM.js} +1 -1
  13. package/.output/public/_nuxt/{DnipZKP_.js → CJJvNaNU.js} +1 -1
  14. package/.output/public/_nuxt/{BkcULE08.js → CsAwRnSX.js} +1 -1
  15. package/.output/public/_nuxt/{BN7fEQYQ.js → Dn-SWUOQ.js} +1 -1
  16. package/.output/public/_nuxt/{CFDrxEXS.js → Dq_3AVr2.js} +1 -1
  17. package/.output/public/_nuxt/builds/latest.json +1 -1
  18. package/.output/public/_nuxt/builds/meta/d5aafba7-a6d1-413e-ba04-fa67fa07c482.json +1 -0
  19. package/.output/public/_nuxt/{BqZt-GBS.js → jEu0WM6o.js} +2 -2
  20. package/.output/public/_nuxt/x-Ln6s2E.js +64 -0
  21. package/.output/server/chunks/_/project.mjs +8 -2
  22. package/.output/server/chunks/_/project.mjs.map +1 -1
  23. package/.output/server/chunks/_/project.service.mjs +189 -14
  24. package/.output/server/chunks/_/project.service.mjs.map +1 -1
  25. package/.output/server/chunks/_/project2.mjs +17 -1
  26. package/.output/server/chunks/_/project2.mjs.map +1 -1
  27. package/.output/server/chunks/_/scenario.mjs +4 -1
  28. package/.output/server/chunks/_/scenario.mjs.map +1 -1
  29. package/.output/server/chunks/_/scenario2.mjs +18 -4
  30. package/.output/server/chunks/_/scenario2.mjs.map +1 -1
  31. package/.output/server/chunks/build/{Alert-BAR7oZm-.mjs → Alert-CGPbjyet.mjs} +1 -1
  32. package/.output/server/chunks/build/{Alert-BAR7oZm-.mjs.map → Alert-CGPbjyet.mjs.map} +1 -1
  33. package/.output/server/chunks/build/{Container-Bi8FG8Bs.mjs → Container-Bw8GVIe-.mjs} +1 -1
  34. package/.output/server/chunks/build/{Container-Bi8FG8Bs.mjs.map → Container-Bw8GVIe-.mjs.map} +1 -1
  35. package/.output/server/chunks/build/{Pagination-DL3lUkxE.mjs → Pagination-BF2ykxf_.mjs} +1 -1
  36. package/.output/server/chunks/build/{Pagination-DL3lUkxE.mjs.map → Pagination-BF2ykxf_.mjs.map} +1 -1
  37. package/.output/server/chunks/build/{_...scenario_-BNXXHGiQ.mjs → _...scenario_-CPwSmhfV.mjs} +16 -6
  38. package/.output/server/chunks/build/{_...scenario_-BNXXHGiQ.mjs.map → _...scenario_-CPwSmhfV.mjs.map} +1 -1
  39. package/.output/server/chunks/build/{_slug_-BeDoAFw5.mjs → _slug_-DjtFCLa7.mjs} +59 -24
  40. package/.output/server/chunks/build/{_slug_-BeDoAFw5.mjs.map → _slug_-DjtFCLa7.mjs.map} +1 -1
  41. package/.output/server/chunks/build/error-404-B5fzVPdQ.mjs +1 -1
  42. package/.output/server/chunks/build/error-500-Be62wrWs.mjs +1 -1
  43. package/.output/server/chunks/build/{modal-styles.CyKDxGJQ.mjs → modal-styles.BQKfDEph.mjs} +3 -3
  44. package/.output/server/chunks/build/modal-styles.BQKfDEph.mjs.map +1 -0
  45. package/.output/server/chunks/build/{origin-BAquq5J9.mjs → origin-D49r5-BY.mjs} +1 -1
  46. package/.output/server/chunks/build/{origin-BAquq5J9.mjs.map → origin-D49r5-BY.mjs.map} +1 -1
  47. package/.output/server/chunks/build/{pages-DUMc2PRf.mjs → pages-Dve6n3fN.mjs} +6 -6
  48. package/.output/server/chunks/build/{pages-DUMc2PRf.mjs.map → pages-Dve6n3fN.mjs.map} +1 -1
  49. package/.output/server/chunks/build/{tags-DQi75Adh.mjs → tags-CU5wN20i.mjs} +48 -5
  50. package/.output/server/chunks/build/{tags-DQi75Adh.mjs.map → tags-CU5wN20i.mjs.map} +1 -1
  51. package/.output/server/chunks/build/{telemetria-D7RgkBCq.mjs → telemetria-CU1QSpLB.mjs} +3 -3
  52. package/.output/server/chunks/build/{telemetria-D7RgkBCq.mjs.map → telemetria-CU1QSpLB.mjs.map} +1 -1
  53. package/.output/server/chunks/nitro/nitro.mjs +163 -156
  54. package/.output/server/chunks/routes/api/index.get.mjs +1 -1
  55. package/.output/server/chunks/routes/api/index.post.mjs +1 -1
  56. package/.output/server/chunks/routes/api/projects/_slug/git/sync.post.mjs +51 -0
  57. package/.output/server/chunks/routes/api/projects/_slug/git/sync.post.mjs.map +1 -0
  58. package/.output/server/chunks/routes/api/projects/_slug/settings.put.mjs +1 -1
  59. package/.output/server/chunks/routes/api/projects/clone.post.mjs +1 -1
  60. package/.output/server/chunks/routes/api/telemetry/report.post.mjs +2 -2
  61. package/.output/server/chunks/routes/renderer.mjs +3 -3
  62. package/.output/server/chunks/virtual/entry.mjs +9 -9
  63. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  64. package/.output/server/chunks/virtual/styles.mjs +3 -3
  65. package/.output/server/index.mjs +1 -1
  66. package/.output/server/package.json +1 -1
  67. package/package.json +1 -1
  68. package/.output/public/_nuxt/2wdMJ9Eu.js +0 -7
  69. package/.output/public/_nuxt/CNqIpQYv.js +0 -1
  70. package/.output/public/_nuxt/Ce4iMzD_.js +0 -1
  71. package/.output/public/_nuxt/DRMDR4V8.js +0 -64
  72. package/.output/public/_nuxt/builds/meta/e29caed9-6dd6-4d2a-bcba-ad4c843531da.json +0 -1
  73. package/.output/server/chunks/build/modal-styles.CyKDxGJQ.mjs.map +0 -1
@@ -1,7 +0,0 @@
1
- import{r as e,t}from"./hePW80VL.js";import{At as n,B as r,En as i,F as a,G as o,H as s,I as c,It as l,Lt as u,M as d,N as f,Ot as p,P as m,Pn as h,S as g,U as _,Wn as v,Zt as y,_r as b,_t as x,dn as S,ht as C,in as w,ln as T,nt as E,pr as D,wt as O}from"./DMHcp4U1.js";import{Kt as k,Wt as A,qt as j,rt as M}from"./cRY3ZoRz.js";import{a as N,i as P,n as F}from"./DKtXkDi_.js";import{ct as I,i as L,l as R,t as z}from"./CFDrxEXS.js";import{a as ee,i as te,l as ne,n as re,t as ie}from"./DjT2EspM.js";import{i as ae,r as oe}from"./B1M4anPy.js";import{t as B}from"./DnipZKP_.js";import{t as V}from"./BDNMzG2s.js";var se={class:`list-disc pl-4`},ce=`env-sem-valor`,H=Object.assign(o({__name:`warnings`,props:{warnings:{default:()=>[]},slug:{}},setup(e){let t=d(()=>e.warnings.map(e=>e.replace(/^[a-z-]+: /,``))),r=d(()=>e.warnings.some(e=>e.startsWith(ce)));return(i,o)=>{let s=L,u=B;return e.warnings.length?(n(),m(u,{key:0,color:`warning`,variant:`soft`,icon:`i-ic-round-warning`,title:`A geração terminou com ressalvas`,"data-testid":`geracao-ressalvas`},{description:T(()=>[f(`ul`,se,[(n(!0),c(g,null,l(v(t),e=>(n(),c(`li`,{key:e},b(e),1))),128))]),v(r)?(n(),m(s,{key:0,label:`Preencher ambiente`,"trailing-icon":`i-ic-round-arrow-forward`,color:`warning`,variant:`link`,class:`mt-1 px-0`,to:`/projects/${e.slug}?environment`,"data-testid":`ressalvas-ambiente`},null,8,[`to`])):a(``,!0)]),_:1})):a(``,!0)}}}),{__name:`ScenarioWarnings`});function le(e){return new URL(globalThis.location.href)}var ue={class:`flex flex-col gap-3 rounded-lg bg-elevated p-4`},de={class:`flex items-center gap-2`},fe={"data-testid":`webdriver-comando`,class:`grow overflow-x-auto whitespace-nowrap rounded-md bg-default p-3 text-xs`},pe=Object.assign(o({__name:`setup`,setup(e){let t=h(`macos`);O(()=>{let e=navigator.userAgent;/Windows/i.test(e)?t.value=`windows`:/Mac/i.test(e)||(t.value=`linux`)});let r=[{label:`macOS`,value:`macos`},{label:`Linux`,value:`linux`},{label:`Windows`,value:`windows`}],a=M(),o=le().origin,l=d(()=>`${o}${a.fullPath}`),u=d(()=>({macos:`open -na "Google Chrome" --args --remote-debugging-port=9222 --user-data-dir="$HOME/.acutis/chrome" "${l.value}"`,linux:`google-chrome --remote-debugging-port=9222 --user-data-dir="$HOME/.acutis/chrome" "${l.value}" &`,windows:`Start-Process "chrome" -ArgumentList "--remote-debugging-port=9222","--user-data-dir=$env:USERPROFILE\\.acutis\\chrome","${l.value}"`})),p=h(!1),m;async function g(){await navigator.clipboard.writeText(u.value[t.value]),p.value=!0,clearTimeout(m),m=setTimeout(()=>{p.value=!1},2e3)}return(e,a)=>{let o=oe,l=ie;return n(),c(`div`,ue,[a[1]||=f(`p`,{class:`text-sm text-muted`},[s(` Abra o Chrome com a porta de depuração. Ele já abre nesta página, é só clicar em `),f(`span`,{class:`font-medium text-default`},`Novo cenário`),s(` de novo: `)],-1),_(o,{modelValue:v(t),"onUpdate:modelValue":a[0]||=e=>i(t)?t.value=e:null,items:r,content:!1,class:`w-full`},null,8,[`modelValue`]),f(`div`,de,[f(`code`,fe,b(v(u)[v(t)]),1),_(l,{icon:v(p)?`i-ic-round-check`:`i-ic-round-content-copy`,label:v(p)?`Copiado!`:`Copiar comando`,color:`neutral`,variant:`soft`,"data-testid":`webdriver-copiar`,onClick:g},null,8,[`icon`,`label`])])])}}}),{__name:`WebdriverSetup`}),me=[`data-testid`],he={class:`flex size-12 items-center justify-center rounded-lg bg-elevated`},ge={class:`font-semibold`},_e={key:0,class:`max-w-sm text-sm text-muted`},ve=Object.assign(o({__name:`empty`,props:{icon:{},title:{},description:{default:``},testid:{default:``}},setup(e){return(t,r)=>{let i=R;return n(),c(`div`,{class:`flex flex-col items-center gap-3 py-10 text-center`,"data-testid":e.testid},[f(`div`,he,[_(i,{name:e.icon,class:`size-7 text-dimmed`},null,8,[`name`])]),f(`p`,ge,b(e.title),1),e.description?(n(),c(`p`,_e,b(e.description),1)):a(``,!0)],8,me)}}}),{__name:`BaseEmpty`});function ye(e){return e.map(e=>({type:e.type,timestamp:e.timestamp,url:e.url??null,selectors:e.selectors??null,label:e.label??null,innerText:e.innerText??null,tagName:e.tagName??null,inputType:e.inputType??null,value:e.value??null,sensitive:e.sensitive??!1,checked:e.checked??null,html:e.html??null,assert:e.assert}))}function be(e){let t=e.selectors,n=(e.label||e.innerText||t?.placeholder||t?.text||``).replace(/\s+/g,` `).trim();return n===``?null:n}function U(e){return`"${e}"`}function W(e){let t=e.url??``;try{let e=new URL(t,`http://base.test`).pathname;return e===`/`?`a página inicial`:U(e)}catch{return t?U(t):`a página inicial`}}function xe(e){let t=be(e);switch(e.type){case`navigate`:return`Navega para ${W(e)}`;case`click`:return t?`Clica em ${U(t)}`:`Clica no elemento`;case`hover`:return t?`Passa o mouse em ${U(t)}`:`Passa o mouse no elemento`;case`fill`:{let n=t?U(t):`o campo`;return e.value?`Preenche ${n} com ${e.sensitive?`••••`:U(e.value)}`:`Preenche ${n}`}case`submit`:return`Envia o formulário`;case`assert`:return e.assert?.assertType===`url`?`Confere que a tela é ${W(e)}`:`Confere ${t?U(t):`o elemento`}`;default:return t??e.url??e.type??``}}var Se=[`src`],Ce={class:`flex w-max max-w-full flex-col`},we=[`data-current`,`data-dropped`,`onClick`],Te=[`data-armed`,`aria-label`,`onClick`],Ee={class:`relative h-px flex-1 overflow-visible rounded-full bg-accented`},De={key:0,class:`arming absolute inset-y-0 left-0 rounded-full bg-error`},Oe={class:`flex flex-col items-center`},ke={class:`pb-6 min-w-0 flex-1`},Ae={key:0,class:`text-xs text-dimmed`},je=600,Me=5e3,G=Object.assign(V(o({__name:`timeline`,props:{events:{},videoSrc:{default:null},recordingStartedAt:{default:null},resumable:{type:Boolean,default:!1}},emits:[`resume`],setup(e,{emit:t}){let r=t,i=h(null),o=h(0),u=h(null),m=h(!1),y,x,S={navigate:`i-ic-round-public`,click:`i-ic-round-ads-click`,fill:`i-ic-round-edit`,submit:`i-ic-round-send`,hover:`i-ic-round-mouse`,assert:`i-ic-round-check-circle`};function C(t){return!e.recordingStartedAt||!t.timestamp?0:Math.max(0,(t.timestamp-e.recordingStartedAt)/1e3)}let w=d(()=>{let t=-1;return e.events.forEach((e,n)=>{C(e)<=o.value&&(t=n)}),t});function T(e){if(!i.value)return;let t=C(e);i.value.currentTime=t,o.value=t}function E(){clearTimeout(y),clearTimeout(x),u.value=null,m.value=!1}function O(e){if(u.value===e){if(!m.value)return;E(),r(`resume`,e);return}E(),u.value=e,y=setTimeout(()=>{m.value=!0},je),x=setTimeout(E,Me)}let A=d(()=>u.value===null?0:e.events.length-u.value);return p(E),(t,r)=>{let d=R;return n(),c(`div`,{class:`grid grid-cols-1 gap-6 lg:grid-cols-5`,onKeydown:k(E,[`esc`])},[e.videoSrc?(n(),c(`video`,{key:0,ref_key:`videoEl`,ref:i,"data-testid":`revisao-video`,src:e.videoSrc,controls:``,class:`w-full self-start rounded-lg lg:sticky lg:top-0 lg:col-span-3`,onTimeupdate:r[0]||=e=>o.value=e.target.currentTime},null,40,Se)):a(``,!0),f(`div`,{class:D(e.videoSrc?`lg:col-span-2`:`lg:col-span-5`)},[r[1]||=f(`p`,{class:`mb-3 font-semibold`},` Timeline dos eventos `,-1),f(`ol`,Ce,[(n(!0),c(g,null,l(e.events,(t,r)=>(n(),c(`li`,{key:r,"data-testid":`revisao-evento`,"data-current":r===v(w)?`true`:`false`,"data-dropped":v(u)!==null&&r>=v(u)?`true`:`false`,class:D([`group relative flex cursor-pointer items-stretch gap-3 transition-opacity`,v(u)!==null&&r>=v(u)?`opacity-50`:``]),onClick:e=>T(t)},[e.resumable&&r>0?(n(),c(`button`,{key:0,type:`button`,"data-testid":`revisao-retomar`,"data-armed":v(u)===r?`true`:`false`,class:D([`absolute -top-5 -right-1.5 -left-1.5 z-10 flex h-4 items-center gap-2 opacity-0 transition-opacity focus-visible:opacity-100 group-hover:opacity-100`,v(u)===r?`opacity-100!`:``]),"aria-label":v(u)===r?`Confirmar a retomada deste passo, descartando ${v(A)}`:`Retomar a gravação deste passo`,onClick:j(e=>O(r),[`stop`])},[f(`span`,{class:D([`h-px flex-1 rounded-full`,v(u)===r?`bg-error`:`bg-primary`])},null,2),f(`span`,{class:D([`rounded-full px-2 py-0.5 text-[10px] leading-none font-medium tracking-wide uppercase`,v(u)===r?`bg-error text-inverted`:`bg-default text-primary`])},[v(u)===r?v(m)?(n(),c(g,{key:1},[s(`clique de novo · descarta `+b(v(A)),1)],64)):(n(),c(g,{key:2},[s(`aguarde…`)],64)):(n(),c(g,{key:0},[s(`retomar daqui`)],64))],2),f(`span`,Ee,[v(u)===r?(n(),c(`span`,De)):a(``,!0)])],10,Te)):a(``,!0),f(`div`,Oe,[_(d,{name:S[t.type]??`i-ic-round-help-outline`,class:D([`size-5 shrink-0 transition-colors`,r<=v(w)?`text-primary`:`text-muted`])},null,8,[`name`,`class`]),r<e.events.length-1?(n(),c(`span`,{key:0,class:D([`w-px grow transition-colors`,r<v(w)?`bg-primary`:`bg-accented`])},null,2)):a(``,!0)]),f(`div`,ke,[f(`p`,{class:D([`truncate text-sm transition-colors group-hover:text-highlighted`,[r===v(w)?`font-semibold text-primary`:`text-default`,v(u)!==null&&r>=v(u)?`line-through decoration-dimmed`:``]])},b(v(xe)(t)),3),e.recordingStartedAt?(n(),c(`p`,Ae,b(C(t).toFixed(1))+`s `,1)):a(``,!0)])],10,we))),128))])],2)],32)}}}),[[`__scopeId`,`data-v-46efcf33`]]),{__name:`ScenarioReviewTimeline`}),K=e(t(((e,t)=>{var n=function(e){var t=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,n=0,r={},i={manual:e.Prism&&e.Prism.manual,disableWorkerMessageHandler:e.Prism&&e.Prism.disableWorkerMessageHandler,util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/\u00a0/g,` `)},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++n}),e.__id},clone:function e(t,n){n||={};var r,a;switch(i.util.type(t)){case`Object`:if(a=i.util.objId(t),n[a])return n[a];for(var o in r={},n[a]=r,t)t.hasOwnProperty(o)&&(r[o]=e(t[o],n));return r;case`Array`:return a=i.util.objId(t),n[a]?n[a]:(r=[],n[a]=r,t.forEach(function(t,i){r[i]=e(t,n)}),r);default:return t}},getLanguage:function(e){for(;e;){var n=t.exec(e.className);if(n)return n[1].toLowerCase();e=e.parentElement}return`none`},setLanguage:function(e,n){e.className=e.className.replace(RegExp(t,`gi`),``),e.classList.add(`language-`+n)},currentScript:function(){if(typeof document>`u`)return null;if(document.currentScript&&document.currentScript.tagName===`SCRIPT`)return document.currentScript;try{throw Error()}catch(r){var e=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(r.stack)||[])[1];if(e){var t=document.getElementsByTagName(`script`);for(var n in t)if(t[n].src==e)return t[n]}return null}},isActive:function(e,t,n){for(var r=`no-`+t;e;){var i=e.classList;if(i.contains(t))return!0;if(i.contains(r))return!1;e=e.parentElement}return!!n}},languages:{plain:r,plaintext:r,text:r,txt:r,extend:function(e,t){var n=i.util.clone(i.languages[e]);for(var r in t)n[r]=t[r];return n},insertBefore:function(e,t,n,r){r||=i.languages;var a=r[e],o={};for(var s in a)if(a.hasOwnProperty(s)){if(s==t)for(var c in n)n.hasOwnProperty(c)&&(o[c]=n[c]);n.hasOwnProperty(s)||(o[s]=a[s])}var l=r[e];return r[e]=o,i.languages.DFS(i.languages,function(t,n){n===l&&t!=e&&(this[t]=o)}),o},DFS:function e(t,n,r,a){a||={};var o=i.util.objId;for(var s in t)if(t.hasOwnProperty(s)){n.call(t,s,t[s],r||s);var c=t[s],l=i.util.type(c);l===`Object`&&!a[o(c)]?(a[o(c)]=!0,e(c,n,null,a)):l===`Array`&&!a[o(c)]&&(a[o(c)]=!0,e(c,n,s,a))}}},plugins:{},highlightAll:function(e,t){i.highlightAllUnder(document,e,t)},highlightAllUnder:function(e,t,n){var r={callback:n,container:e,selector:`code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code`};i.hooks.run(`before-highlightall`,r),r.elements=Array.prototype.slice.apply(r.container.querySelectorAll(r.selector)),i.hooks.run(`before-all-elements-highlight`,r);for(var a=0,o;o=r.elements[a++];)i.highlightElement(o,t===!0,r.callback)},highlightElement:function(t,n,r){var a=i.util.getLanguage(t),o=i.languages[a];i.util.setLanguage(t,a);var s=t.parentElement;s&&s.nodeName.toLowerCase()===`pre`&&i.util.setLanguage(s,a);var c={element:t,language:a,grammar:o,code:t.textContent};function l(e){c.highlightedCode=e,i.hooks.run(`before-insert`,c),c.element.innerHTML=c.highlightedCode,i.hooks.run(`after-highlight`,c),i.hooks.run(`complete`,c),r&&r.call(c.element)}if(i.hooks.run(`before-sanity-check`,c),s=c.element.parentElement,s&&s.nodeName.toLowerCase()===`pre`&&!s.hasAttribute(`tabindex`)&&s.setAttribute(`tabindex`,`0`),!c.code){i.hooks.run(`complete`,c),r&&r.call(c.element);return}if(i.hooks.run(`before-highlight`,c),!c.grammar){l(i.util.encode(c.code));return}if(n&&e.Worker){var u=new Worker(i.filename);u.onmessage=function(e){l(e.data)},u.postMessage(JSON.stringify({language:c.language,code:c.code,immediateClose:!0}))}else l(i.highlight(c.code,c.grammar,c.language))},highlight:function(e,t,n){var r={code:e,grammar:t,language:n};if(i.hooks.run(`before-tokenize`,r),!r.grammar)throw Error(`The language "`+r.language+`" has no grammar.`);return r.tokens=i.tokenize(r.code,r.grammar),i.hooks.run(`after-tokenize`,r),a.stringify(i.util.encode(r.tokens),r.language)},tokenize:function(e,t){var n=t.rest;if(n){for(var r in n)t[r]=n[r];delete t.rest}var i=new c;return l(i,i.head,e),s(e,i,t,i.head,0),d(i)},hooks:{all:{},add:function(e,t){var n=i.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=i.hooks.all[e];if(!(!n||!n.length))for(var r=0,a;a=n[r++];)a(t)}},Token:a};e.Prism=i;function a(e,t,n,r){this.type=e,this.content=t,this.alias=n,this.length=(r||``).length|0}a.stringify=function e(t,n){if(typeof t==`string`)return t;if(Array.isArray(t)){var r=``;return t.forEach(function(t){r+=e(t,n)}),r}var a={type:t.type,content:e(t.content,n),tag:`span`,classes:[`token`,t.type],attributes:{},language:n},o=t.alias;o&&(Array.isArray(o)?Array.prototype.push.apply(a.classes,o):a.classes.push(o)),i.hooks.run(`wrap`,a);var s=``;for(var c in a.attributes)s+=` `+c+`="`+(a.attributes[c]||``).replace(/"/g,`&quot;`)+`"`;return`<`+a.tag+` class="`+a.classes.join(` `)+`"`+s+`>`+a.content+`</`+a.tag+`>`};function o(e,t,n,r){e.lastIndex=t;var i=e.exec(n);if(i&&r&&i[1]){var a=i[1].length;i.index+=a,i[0]=i[0].slice(a)}return i}function s(e,t,n,r,c,d){for(var f in n)if(!(!n.hasOwnProperty(f)||!n[f])){var p=n[f];p=Array.isArray(p)?p:[p];for(var m=0;m<p.length;++m){if(d&&d.cause==f+`,`+m)return;var h=p[m],g=h.inside,_=!!h.lookbehind,v=!!h.greedy,y=h.alias;if(v&&!h.pattern.global){var b=h.pattern.toString().match(/[imsuy]*$/)[0];h.pattern=RegExp(h.pattern.source,b+`g`)}for(var x=h.pattern||h,S=r.next,C=c;S!==t.tail&&!(d&&C>=d.reach);C+=S.value.length,S=S.next){var w=S.value;if(t.length>e.length)return;if(!(w instanceof a)){var T=1,E;if(v){if(E=o(x,C,e,_),!E||E.index>=e.length)break;var D=E.index,O=E.index+E[0].length,k=C;for(k+=S.value.length;D>=k;)S=S.next,k+=S.value.length;if(k-=S.value.length,C=k,S.value instanceof a)continue;for(var A=S;A!==t.tail&&(k<O||typeof A.value==`string`);A=A.next)T++,k+=A.value.length;T--,w=e.slice(C,k),E.index-=C}else if(E=o(x,0,w,_),!E)continue;var D=E.index,j=E[0],M=w.slice(0,D),N=w.slice(D+j.length),P=C+w.length;d&&P>d.reach&&(d.reach=P);var F=S.prev;M&&(F=l(t,F,M),C+=M.length),u(t,F,T);var I=new a(f,g?i.tokenize(j,g):j,y,j);if(S=l(t,F,I),N&&l(t,S,N),T>1){var L={cause:f+`,`+m,reach:P};s(e,t,n,S.prev,C,L),d&&L.reach>d.reach&&(d.reach=L.reach)}}}}}}function c(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function l(e,t,n){var r=t.next,i={value:n,prev:t,next:r};return t.next=i,r.prev=i,e.length++,i}function u(e,t,n){for(var r=t.next,i=0;i<n&&r!==e.tail;i++)r=r.next;t.next=r,r.prev=t,e.length-=i}function d(e){for(var t=[],n=e.head.next;n!==e.tail;)t.push(n.value),n=n.next;return t}if(!e.document)return e.addEventListener&&(i.disableWorkerMessageHandler||e.addEventListener(`message`,function(t){var n=JSON.parse(t.data),r=n.language,a=n.code,o=n.immediateClose;e.postMessage(i.highlight(a,i.languages[r],r)),o&&e.close()},!1)),i;var f=i.util.currentScript();f&&(i.filename=f.src,f.hasAttribute(`data-manual`)&&(i.manual=!0));function p(){i.manual||i.highlightAll()}if(!i.manual){var m=document.readyState;m===`loading`||m===`interactive`&&f&&f.defer?document.addEventListener(`DOMContentLoaded`,p):window.requestAnimationFrame?window.requestAnimationFrame(p):window.setTimeout(p,16)}return i}(typeof window<`u`?window:typeof WorkerGlobalScope<`u`&&self instanceof WorkerGlobalScope?self:{});t!==void 0&&t.exports&&(t.exports=n),typeof global<`u`&&(global.Prism=n),n.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:`attr-equals`},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:`named-entity`},/&#x?[\da-f]{1,8};/i]},n.languages.markup.tag.inside[`attr-value`].inside.entity=n.languages.markup.entity,n.languages.markup.doctype.inside[`internal-subset`].inside=n.languages.markup,n.hooks.add(`wrap`,function(e){e.type===`entity`&&(e.attributes.title=e.content.replace(/&amp;/,`&`))}),Object.defineProperty(n.languages.markup.tag,"addInlined",{value:function(e,t){var r={};r[`language-`+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:n.languages[t]},r.cdata=/^<!\[CDATA\[|\]\]>$/i;var i={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:r}};i[`language-`+t]={pattern:/[\s\S]+/,inside:n.languages[t]};var a={};a[e]={pattern:RegExp(`(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[\\s\\S])*?(?=<\\/__>)`.replace(/__/g,function(){return e}),`i`),lookbehind:!0,greedy:!0,inside:i},n.languages.insertBefore(`markup`,`cdata`,a)}}),Object.defineProperty(n.languages.markup.tag,"addAttribute",{value:function(e,t){n.languages.markup.tag.inside[`special-attr`].push({pattern:RegExp(`(^|["'\\s])(?:`+e+`)\\s*=\\s*(?:"[^"]*"|'[^']*'|[^\\s'">=]+(?=[\\s>]))`,`i`),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,`language-`+t],inside:n.languages[t]},punctuation:[{pattern:/^=/,alias:`attr-equals`},/"|'/]}}}})}}),n.languages.html=n.languages.markup,n.languages.mathml=n.languages.markup,n.languages.svg=n.languages.markup,n.languages.xml=n.languages.extend(`markup`,{}),n.languages.ssml=n.languages.xml,n.languages.atom=n.languages.xml,n.languages.rss=n.languages.xml,(function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp(`@[\\w-](?:[^;{\\s"']|\\s+(?!\\s)|`+t.source+`)*?(?:;|(?=\\s*\\{))`),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:`selector`},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp(`\\burl\\((?:`+t.source+`|(?:[^\\\\\\r\\n()"']|\\\\[\\s\\S])*)\\)`,`i`),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp(`^`+t.source+`$`),alias:`url`}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+t.source+`)*(?=\\s*\\{)`),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined(`style`,`css`),n.tag.addAttribute(`style`,`css`))})(n),n.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},n.languages.javascript=n.languages.extend(`clike`,{"class-name":[n.languages.clike[`class-name`],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(`(^|[^\\w$])(?:NaN|Infinity|0[bB][01]+(?:_[01]+)*n?|0[oO][0-7]+(?:_[0-7]+)*n?|0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?|\\d+(?:_\\d+)*n|(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?)(?![\\w$])`),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),n.languages.javascript[`class-name`][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,n.languages.insertBefore(`javascript`,`keyword`,{regex:{pattern:RegExp(`((?:^|[^$\\w\\xA0-\\uFFFF."'\\])\\s]|\\b(?:return|yield))\\s*)\\/(?:(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}|(?:\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}v[dgimyus]{0,7})(?=(?:\\s|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*(?:$|[\\r\\n,.;:})\\]]|\\/\\/))`),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:`language-regex`,inside:n.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:`function`},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:n.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:n.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:n.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:n.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),n.languages.insertBefore(`javascript`,`string`,{hashbang:{pattern:/^#!.*/,greedy:!0,alias:`comment`},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:`string`},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:`punctuation`},rest:n.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:`property`}}),n.languages.insertBefore(`javascript`,`operator`,{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:`property`}}),n.languages.markup&&(n.languages.markup.tag.addInlined(`script`,`javascript`),n.languages.markup.tag.addAttribute(`on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)`,`javascript`)),n.languages.js=n.languages.javascript,(function(){if(n===void 0||typeof document>`u`)return;Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector);var e=`Loading…`,t=function(e,t){return`✖ Error `+e+` while fetching file: `+t},r=`✖ Error: File does not exist or is empty`,i={js:`javascript`,py:`python`,rb:`ruby`,ps1:`powershell`,psm1:`powershell`,sh:`bash`,bat:`batch`,h:`c`,tex:`latex`},a=`data-src-status`,o=`loading`,s=`loaded`,c=`failed`,l=`pre[data-src]:not([`+a+`="`+s+`"]):not([`+a+`="`+o+`"])`;function u(e,n,i){var a=new XMLHttpRequest;a.open(`GET`,e,!0),a.onreadystatechange=function(){a.readyState==4&&(a.status<400&&a.responseText?n(a.responseText):a.status>=400?i(t(a.status,a.statusText)):i(r))},a.send(null)}function d(e){var t=/^\s*(\d+)\s*(?:(,)\s*(?:(\d+)\s*)?)?$/.exec(e||``);if(t){var n=Number(t[1]),r=t[2],i=t[3];return r?i?[n,Number(i)]:[n,void 0]:[n,n]}}n.hooks.add(`before-highlightall`,function(e){e.selector+=`, `+l}),n.hooks.add(`before-sanity-check`,function(t){var r=t.element;if(r.matches(l)){t.code=``,r.setAttribute(a,o);var f=r.appendChild(document.createElement(`CODE`));f.textContent=e;var p=r.getAttribute(`data-src`),m=t.language;if(m===`none`){var h=(/\.(\w+)$/.exec(p)||[,`none`])[1];m=i[h]||h}n.util.setLanguage(f,m),n.util.setLanguage(r,m);var g=n.plugins.autoloader;g&&g.loadLanguages(m),u(p,function(e){r.setAttribute(a,s);var t=d(r.getAttribute(`data-range`));if(t){var i=e.split(/\r\n?|\n/g),o=t[0],c=t[1]==null?i.length:t[1];o<0&&(o+=i.length),o=Math.max(0,Math.min(o-1,i.length)),c<0&&(c+=i.length),c=Math.max(0,Math.min(c,i.length)),e=i.slice(o,c).join(`
2
- `),r.hasAttribute(`data-start`)||r.setAttribute(`data-start`,String(o+1))}f.textContent=e,n.highlightElement(f)},function(e){r.setAttribute(a,c),f.textContent=e})}}),n.plugins.fileHighlight={highlight:function(e){for(var t=(e||document).querySelectorAll(l),r=0,i;i=t[r++];)n.highlightElement(i)}};var f=!1;n.fileHighlight=function(){f||=(console.warn("Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead."),!0),n.plugins.fileHighlight.highlight.apply(this,arguments)}})()}))(),1);(function(e){e.languages.typescript=e.languages.extend(`javascript`,{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript[`literal-property`];var t=e.languages.extend(`typescript`,{});delete t[`class-name`],e.languages.typescript[`class-name`].inside=t,e.languages.insertBefore(`typescript`,`function`,{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:`operator`},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:`class-name`,inside:t}}}}),e.languages.ts=e.languages.typescript})(Prism),(function(e){var t=`(?:\\r?\\n|\\r)[ \\t]*\\|.+\\|(?:(?!\\|).)*`;e.languages.gherkin={pystring:{pattern:/("""|''')[\s\S]+?\1/,alias:`string`},comment:{pattern:/(^[ \t]*)#.*/m,lookbehind:!0},tag:{pattern:/(^[ \t]*)@\S*/m,lookbehind:!0},feature:{pattern:/((?:^|\r?\n|\r)[ \t]*)(?:Ability|Ahoy matey!|Arwedd|Aspekt|Besigheid Behoefte|Business Need|Caracteristica|Característica|Egenskab|Egenskap|Eiginleiki|Feature|Fīča|Fitur|Fonctionnalité|Fonksyonalite|Funcionalidade|Funcionalitat|Functionalitate|Funcţionalitate|Funcționalitate|Functionaliteit|Fungsi|Funkcia|Funkcija|Funkcionalitāte|Funkcionalnost|Funkcja|Funksie|Funktionalität|Funktionalitéit|Funzionalità|Hwaet|Hwæt|Jellemző|Karakteristik|Lastnost|Mak|Mogucnost|laH|Mogućnost|Moznosti|Možnosti|OH HAI|Omadus|Ominaisuus|Osobina|Özellik|Potrzeba biznesowa|perbogh|poQbogh malja'|Požadavek|Požiadavka|Pretty much|Qap|Qu'meH 'ut|Savybė|Tính năng|Trajto|Vermoë|Vlastnosť|Właściwość|Značilnost|Δυνατότητα|Λειτουργία|Могућност|Мөмкинлек|Особина|Свойство|Үзенчәлеклелек|Функционал|Функционалност|Функция|Функціонал|תכונה|خاصية|خصوصیت|صلاحیت|کاروبار کی ضرورت|وِیژگی|रूप लेख|ਖਾਸੀਅਤ|ਨਕਸ਼ ਨੁਹਾਰ|ਮੁਹਾਂਦਰਾ|గుణము|ಹೆಚ್ಚಳ|ความต้องการทางธุรกิจ|ความสามารถ|โครงหลัก|기능|フィーチャ|功能|機能):(?:[^:\r\n]+(?:\r?\n|\r|$))*/,lookbehind:!0,inside:{important:{pattern:/(:)[^\r\n]+/,lookbehind:!0},keyword:/[^:\r\n]+:/}},scenario:{pattern:/(^[ \t]*)(?:Abstract Scenario|Abstrakt Scenario|Achtergrond|Aer|Ær|Agtergrond|All y'all|Antecedentes|Antecedents|Atburðarás|Atburðarásir|Awww, look mate|B4|Background|Baggrund|Bakgrund|Bakgrunn|Bakgrunnur|Beispiele|Beispiller|Bối cảnh|Cefndir|Cenario|Cenário|Cenario de Fundo|Cenário de Fundo|Cenarios|Cenários|Contesto|Context|Contexte|Contexto|Conto|Contoh|Contone|Dæmi|Dasar|Dead men tell no tales|Delineacao do Cenario|Delineação do Cenário|Dis is what went down|Dữ liệu|Dyagram Senaryo|Dyagram senaryo|Egzanp|Ejemplos|Eksempler|Ekzemploj|Enghreifftiau|Esbozo do escenario|Escenari|Escenario|Esempi|Esquema de l'escenari|Esquema del escenario|Esquema do Cenario|Esquema do Cenário|EXAMPLZ|Examples|Exempel|Exemple|Exemples|Exemplos|First off|Fono|Forgatókönyv|Forgatókönyv vázlat|Fundo|Geçmiş|Grundlage|Hannergrond|ghantoH|Háttér|Heave to|Istorik|Juhtumid|Keadaan|Khung kịch bản|Khung tình huống|Kịch bản|Koncept|Konsep skenario|Kontèks|Kontekst|Kontekstas|Konteksts|Kontext|Konturo de la scenaro|Latar Belakang|lut chovnatlh|lut|lutmey|Lýsing Atburðarásar|Lýsing Dæma|MISHUN SRSLY|MISHUN|Menggariskan Senario|mo'|Náčrt Scenára|Náčrt Scénáře|Náčrt Scenáru|Oris scenarija|Örnekler|Osnova|Osnova Scenára|Osnova scénáře|Osnutek|Ozadje|Paraugs|Pavyzdžiai|Példák|Piemēri|Plan du scénario|Plan du Scénario|Plan Senaryo|Plan senaryo|Plang vum Szenario|Pozadí|Pozadie|Pozadina|Príklady|Příklady|Primer|Primeri|Primjeri|Przykłady|Raamstsenaarium|Reckon it's like|Rerefons|Scenár|Scénář|Scenarie|Scenarij|Scenarijai|Scenarijaus šablonas|Scenariji|Scenārijs|Scenārijs pēc parauga|Scenarijus|Scenario|Scénario|Scenario Amlinellol|Scenario Outline|Scenario Template|Scenariomal|Scenariomall|Scenarios|Scenariu|Scenariusz|Scenaro|Schema dello scenario|Se ðe|Se the|Se þe|Senario|Senaryo Deskripsyon|Senaryo deskripsyon|Senaryo|Senaryo taslağı|Shiver me timbers|Situācija|Situai|Situasie Uiteensetting|Situasie|Skenario konsep|Skenario|Skica|Structura scenariu|Structură scenariu|Struktura scenarija|Stsenaarium|Swa hwaer swa|Swa|Swa hwær swa|Szablon scenariusza|Szenario|Szenariogrundriss|Tapaukset|Tapaus|Tapausaihio|Taust|Tausta|Template Keadaan|Template Senario|Template Situai|The thing of it is|Tình huống|Variantai|Voorbeelde|Voorbeelden|Wharrimean is|Yo-ho-ho|You'll wanna|Założenia|Παραδείγματα|Περιγραφή Σεναρίου|Σενάρια|Σενάριο|Υπόβαθρο|Кереш|Контекст|Концепт|Мисаллар|Мисоллар|Основа|Передумова|Позадина|Предистория|Предыстория|Приклади|Пример|Примери|Примеры|Рамка на сценарий|Скица|Структура сценарија|Структура сценария|Структура сценарію|Сценарий|Сценарий структураси|Сценарийның төзелеше|Сценарији|Сценарио|Сценарій|Тарих|Үрнәкләр|דוגמאות|רקע|תבנית תרחיש|תרחיש|الخلفية|الگوی سناریو|امثلة|پس منظر|زمینه|سناریو|سيناريو|سيناريو مخطط|مثالیں|منظر نامے کا خاکہ|منظرنامہ|نمونه ها|उदाहरण|परिदृश्य|परिदृश्य रूपरेखा|पृष्ठभूमि|ਉਦਾਹਰਨਾਂ|ਪਟਕਥਾ|ਪਟਕਥਾ ਢਾਂਚਾ|ਪਟਕਥਾ ਰੂਪ ਰੇਖਾ|ਪਿਛੋਕੜ|ఉదాహరణలు|కథనం|నేపథ్యం|సన్నివేశం|ಉದಾಹರಣೆಗಳು|ಕಥಾಸಾರಾಂಶ|ವಿವರಣೆ|ಹಿನ್ನೆಲೆ|โครงสร้างของเหตุการณ์|ชุดของตัวอย่าง|ชุดของเหตุการณ์|แนวคิด|สรุปเหตุการณ์|เหตุการณ์|배경|시나리오|시나리오 개요|예|サンプル|シナリオ|シナリオアウトライン|シナリオテンプレ|シナリオテンプレート|テンプレ|例|例子|剧本|剧本大纲|劇本|劇本大綱|场景|场景大纲|場景|場景大綱|背景):[^:\r\n]*/m,lookbehind:!0,inside:{important:{pattern:/(:)[^\r\n]*/,lookbehind:!0},keyword:/[^:\r\n]+:/}},"table-body":{pattern:RegExp(`(`+t+`)(?:`+t+`)+`),lookbehind:!0,inside:{outline:{pattern:/<[^>]+>/,alias:`variable`},td:{pattern:/\s*[^\s|][^|]*/,alias:`string`},punctuation:/\|/}},"table-head":{pattern:RegExp(t),inside:{th:{pattern:/\s*[^\s|][^|]*/,alias:`variable`},punctuation:/\|/}},atrule:{pattern:/(^[ \t]+)(?:'a|'ach|'ej|7|a|A také|A taktiež|A tiež|A zároveň|Aber|Ac|Adott|Akkor|Ak|Aleshores|Ale|Ali|Allora|Alors|Als|Ama|Amennyiben|Amikor|Ampak|an|AN|Ananging|And y'all|And|Angenommen|Anrhegedig a|An|Apabila|Atès|Atesa|Atunci|Avast!|Aye|A|awer|Bagi|Banjur|Bet|Biết|Blimey!|Buh|But at the end of the day I reckon|But y'all|But|BUT|Cal|Când|Cand|Cando|Ce|Cuando|Če|Ða ðe|Ða|Dadas|Dada|Dados|Dado|DaH ghu' bejlu'|dann|Dann|Dano|Dan|Dar|Dat fiind|Data|Date fiind|Date|Dati fiind|Dati|Daţi fiind|Dați fiind|DEN|Dato|De|Den youse gotta|Dengan|Diberi|Diyelim ki|Donada|Donat|Donitaĵo|Do|Dun|Duota|Ðurh|Eeldades|Ef|Eğer ki|Entao|Então|Entón|E|En|Entonces|Epi|És|Etant donnée|Etant donné|Et|Étant données|Étant donnée|Étant donné|Etant données|Etant donnés|Étant donnés|Fakat|Gangway!|Gdy|Gegeben seien|Gegeben sei|Gegeven|Gegewe|ghu' noblu'|Gitt|Given y'all|Given|Givet|Givun|Ha|Cho|I CAN HAZ|In|Ir|It's just unbelievable|I|Ja|Jeśli|Jeżeli|Kad|Kada|Kadar|Kai|Kaj|Když|Keď|Kemudian|Ketika|Khi|Kiedy|Ko|Kuid|Kui|Kun|Lan|latlh|Le sa a|Let go and haul|Le|Lè sa a|Lè|Logo|Lorsqu'<|Lorsque|mä|Maar|Mais|Mając|Ma|Majd|Maka|Manawa|Mas|Men|Menawa|Mutta|Nalika|Nalikaning|Nanging|Når|När|Nato|Nhưng|Niin|Njuk|O zaman|Och|Og|Oletetaan|Ond|Onda|Oraz|Pak|Pero|Però|Podano|Pokiaľ|Pokud|Potem|Potom|Privzeto|Pryd|Quan|Quand|Quando|qaSDI'|Så|Sed|Se|Siis|Sipoze ke|Sipoze Ke|Sipoze|Si|Şi|Și|Soit|Stel|Tada|Tad|Takrat|Tak|Tapi|Ter|Tetapi|Tha the|Tha|Then y'all|Then|Thì|Thurh|Toda|Too right|Un|Und|ugeholl|Và|vaj|Vendar|Ve|wann|Wanneer|WEN|Wenn|When y'all|When|Wtedy|Wun|Y'know|Yeah nah|Yna|Youse know like when|Youse know when youse got|Y|Za predpokladu|Za předpokladu|Zadan|Zadani|Zadano|Zadate|Zadato|Zakładając|Zaradi|Zatati|Þa þe|Þa|Þá|Þegar|Þurh|Αλλά|Δεδομένου|Και|Όταν|Τότε|А також|Агар|Але|Али|Аммо|А|Әгәр|Әйтик|Әмма|Бирок|Ва|Вә|Дадено|Дано|Допустим|Если|Задате|Задати|Задато|И|І|К тому же|Када|Кад|Когато|Когда|Коли|Ләкин|Лекин|Нәтиҗәдә|Нехай|Но|Онда|Припустимо, що|Припустимо|Пусть|Также|Та|Тогда|Тоді|То|Унда|Һәм|Якщо|אבל|אזי|אז|בהינתן|וגם|כאשר|آنگاه|اذاً|اگر|اما|اور|با فرض|بالفرض|بفرض|پھر|تب|ثم|جب|عندما|فرض کیا|لكن|لیکن|متى|هنگامی|و|अगर|और|कदा|किन्तु|चूंकि|जब|तथा|तदा|तब|परन्तु|पर|यदि|ਅਤੇ|ਜਦੋਂ|ਜਿਵੇਂ ਕਿ|ਜੇਕਰ|ਤਦ|ਪਰ|అప్పుడు|ఈ పరిస్థితిలో|కాని|చెప్పబడినది|మరియు|ಆದರೆ|ನಂತರ|ನೀಡಿದ|ಮತ್ತು|ಸ್ಥಿತಿಯನ್ನು|กำหนดให้|ดังนั้น|แต่|เมื่อ|และ|그러면<|그리고<|단<|만약<|만일<|먼저<|조건<|하지만<|かつ<|しかし<|ただし<|ならば<|もし<|並且<|但し<|但是<|假如<|假定<|假設<|假设<|前提<|同时<|同時<|并且<|当<|當<|而且<|那么<|那麼<)(?=[ \t])/m,lookbehind:!0},string:{pattern:/"(?:\\.|[^"\\\r\n])*"|'(?:\\.|[^'\\\r\n])*'/,inside:{outline:{pattern:/<[^>]+>/,alias:`variable`}}},outline:{pattern:/<[^>]+>/,alias:`variable`}}})(Prism);var Ne={class:`codefield relative overflow-hidden rounded-md bg-elevated font-mono text-sm/6`},Pe={"aria-hidden":`true`,class:`codefield-box pointer-events-none absolute inset-0 m-0 overflow-hidden`},Fe=[`data-testid`,`readonly`],q=Object.assign(V(o({__name:`codefield`,props:C({language:{},testid:{},readonly:{type:Boolean,default:!1}},{modelValue:{default:``},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=y(e,`modelValue`),r=h(null);function i(e){if(typeof e==`string`)return[e];if(Array.isArray(e))return e.flatMap(i);let t=Array.isArray(e.alias)?e.alias:[e.alias].filter(Boolean);return[E(`span`,{class:[`token`,e.type,...t]},i(e.content))]}let a=d(()=>[...K.default.tokenize(t.value,K.default.languages[e.language]),`
3
- `]),s=o(()=>()=>E(`code`,null,i(a.value)));function l(){let e=r.value;e&&(e.style.height=`auto`,e.style.height=`${e.scrollHeight}px`)}function u(e){let n=r.value;if(!n)return;e.preventDefault();let{selectionStart:i,selectionEnd:a}=n;t.value=`${t.value.slice(0,i)} ${t.value.slice(a)}`,x(()=>n.setSelectionRange(i+2,i+2))}return w(t,()=>x(l)),O(l),(i,a)=>(n(),c(`div`,Ne,[f(`pre`,Pe,[_(v(s))]),S(f(`textarea`,{ref_key:`textarea`,ref:r,"onUpdate:modelValue":a[0]||=e=>t.value=e,"data-testid":e.testid,readonly:e.readonly,spellcheck:`false`,class:`codefield-box relative block w-full resize-none bg-transparent text-transparent caret-[var(--ui-text-highlighted)] outline-none`,onInput:l,onKeydown:k(u,[`tab`])},null,40,Fe),[[A,t.value]])]))}}),[[`__scopeId`,`data-v-3e187072`]]),{__name:`BaseCodefield`}),Ie={class:`flex min-h-24 items-center justify-center text-center`},Le={class:`w-full text-lg text-muted break-words`},Re=Object.assign(o({__name:`confirm`,props:C({title:{},description:{default:``},confirmLabel:{default:`Confirmar`},confirmColor:{default:`primary`},confirmTestid:{default:`confirmar`},loading:{type:Boolean,default:!1}},{open:{type:Boolean,default:!1},openModifiers:{}}),emits:C([`confirm`],[`update:open`]),setup(e,{emit:t}){let r=y(e,`open`),i=t;return(t,a)=>{let o=L,c=F;return n(),m(c,{open:r.value,"onUpdate:open":a[2]||=e=>r.value=e,title:e.title},{body:T(()=>[f(`div`,Ie,[f(`p`,Le,[u(t.$slots,`description`,{},()=>[s(b(e.description),1)])])])]),footer:T(()=>[_(o,{label:`Cancelar`,color:`neutral`,variant:`ghost`,"data-testid":`confirmar-cancelar`,onClick:a[0]||=e=>r.value=!1}),_(o,{label:e.confirmLabel,color:e.confirmColor,loading:e.loading,"data-testid":e.confirmTestid,onClick:a[1]||=e=>i(`confirm`)},null,8,[`label`,`color`,`loading`,`data-testid`])]),_:3},8,[`open`,`title`])}}}),{__name:`BaseConfirm`});function J(e){return e.normalize(`NFD`).replace(/\p{Diacritic}/gu,``).toLowerCase().replace(/[^a-z0-9]+/g,`-`).slice(0,80).replace(/^-+|-+$/g,``)}function ze(e){let t=e.spec.replace(/^tests\//,``).replace(/\.spec\.ts$/,``).split(`/`);return{title:e.title,path:t.at(-1),domain:t.length>1?t.slice(0,-1).join(`/`):``,tags:e.tags,gherkin:e.gherkin??``,playwright:e.playwright}}var Be={class:`flex flex-col gap-5`},Ve={class:`grid grid-cols-1 gap-4 sm:grid-cols-2`},Y=Object.assign(o({__name:`contexts`,props:C({isAuth:{type:Boolean,default:!1},novo:{type:Boolean,default:!1}},{draft:{required:!0},draftModifiers:{}}),emits:[`update:draft`],setup(e){let t=y(e,`draft`);function r(e){return e.match(/@[\w-]+/g)??[]}function o(e){let t=e.split(`
4
- `)[0]??``;return t.trim().startsWith(`@`)?r(t):[]}function s(e){let t=e.match(/tag:\s*\[([^\]]*)\]/);return t?r(t[1]):[]}function l(e,t){if(!e.trim())return e;let n=e.split(`
5
- `);n[0]?.trim().startsWith(`@`)&&n.shift();let r=n.join(`
6
- `);return t.length?`${t.join(` `)}\n${r}`:r}function u(e,t){if(!t.length)return e;let n=`tag: [${t.map(e=>`'${e}'`).join(`, `)}]`;return/tag:\s*\[[^\]]*\]/.test(e)?e.replace(/tag:\s*\[[^\]]*\]/,n):e.replace(/test\.describe\(\s*((["']).+?\2)\s*,\s*(?=\(|async)/,`test.describe($1, { ${n} }, `)}let p=!1;function h(e){p=!0,t.value={...t.value,tags:e,gherkin:l(t.value.gherkin,e),playwright:u(t.value.playwright,e)},x(()=>{p=!1})}let g=d({get:()=>t.value.tags.join(` `),set:e=>h(r(e))});return w(()=>t.value.gherkin,e=>{if(p)return;let n=o(e);n.length&&n.join(` `)!==t.value.tags.join(` `)&&h(n)}),w(()=>t.value.playwright,e=>{if(p)return;let n=s(e);n.length&&n.join(` `)!==t.value.tags.join(` `)&&h(n)}),w(()=>t.value.title,(n,r)=>{!e.novo||t.value.path!==J(r)||(t.value={...t.value,path:J(n)})}),(r,o)=>{let s=P,l=N,u=q;return n(),c(`div`,Be,[f(`div`,Ve,[_(l,{label:`Título do cenário`},{default:T(()=>[_(s,{modelValue:t.value.title,"onUpdate:modelValue":o[0]||=e=>t.value.title=e,maxlength:v(120),"data-testid":`contexto-titulo`,class:`w-full`},null,8,[`modelValue`,`maxlength`])]),_:1}),e.isAuth?a(``,!0):(n(),m(l,{key:0,label:`Arquivo`,help:`Nome do .spec.ts / .feature`},{default:T(()=>[_(s,{modelValue:t.value.path,"onUpdate:modelValue":o[1]||=e=>t.value.path=e,maxlength:v(80),"data-testid":`contexto-path`,class:`w-full`},null,8,[`modelValue`,`maxlength`])]),_:1}))]),e.isAuth?a(``,!0):(n(),m(l,{key:0,label:`Domínio`,help:`Pasta onde o cenário será salvo (ex.: login, checkout)`},{default:T(()=>[_(s,{modelValue:t.value.domain,"onUpdate:modelValue":o[2]||=e=>t.value.domain=e,maxlength:v(80),"data-testid":`contexto-dominio`,class:`w-full`},null,8,[`modelValue`,`maxlength`])]),_:1})),e.isAuth?a(``,!0):(n(),m(l,{key:1,label:`Tags`,help:`Separadas por espaço (ex.: @read @criando)`},{default:T(()=>[_(s,{modelValue:v(g),"onUpdate:modelValue":o[3]||=e=>i(g)?g.value=e:null,"data-testid":`contexto-tags`,class:`w-full`},null,8,[`modelValue`])]),_:1})),_(l,{label:`Cenário (Gherkin)`},{default:T(()=>[_(u,{modelValue:t.value.gherkin,"onUpdate:modelValue":o[4]||=e=>t.value.gherkin=e,language:`gherkin`,testid:`contexto-cenario`},null,8,[`modelValue`])]),_:1}),_(l,{label:`Teste (Playwright)`},{default:T(()=>[_(u,{modelValue:t.value.playwright,"onUpdate:modelValue":o[5]||=e=>t.value.playwright=e,language:`typescript`,testid:`contexto-teste`},null,8,[`modelValue`])]),_:1})])}}}),{__name:`ScenarioReviewContexts`}),He={class:`flex flex-col items-center gap-6 py-10 text-center`},Ue={class:`text-lg font-mono font-medium text-highlighted`},We={class:`text-xs text-dimmed`},Ge=`!<>-_\\/[]{}—=+*^?#01`,Ke=50,qe=1200,X=Object.assign(o({__name:`phrases`,props:{phrases:{},icon:{default:`i-line-md-coffee-half-empty-twotone-loop`},hint:{default:`Isso pode levar alguns segundos.`}},setup(e){let t=h(e.phrases[0]);function r(e){return e===` `?` `:Ge[Math.floor(Math.random()*20)]}function i(e){return new Promise(t=>setTimeout(t,e))}async function a(e){for(let n=e.length;n>=0;n--)t.value=e.slice(0,n)+e.slice(n).split(``).map(r).join(``),await i(Ke)}async function o(e){for(let n=0;n<=e.length;n++)t.value=e.slice(0,n)+e.slice(n).split(``).map(r).join(``),await i(Ke)}let s=!0;async function l(){let t=0;for(;s;){if(await i(qe),!s)return;let n=e.phrases[(t+1)%e.phrases.length];if(await a(e.phrases[t]),!s)return;await o(n),t=(t+1)%e.phrases.length}}return O(()=>{l()}),p(()=>{s=!1}),(r,i)=>{let a=R;return n(),c(`div`,He,[_(a,{name:e.icon,class:`size-20 text-highlighted/75`},null,8,[`name`]),f(`p`,Ue,b(v(t)),1),f(`p`,We,b(e.hint),1)])}}}),{__name:`BaseLoadingPhrases`}),Je=Object.assign(o({__name:`loading`,props:{auth:{type:Boolean,default:!1}},setup(e){let t=[`Analisando os elementos da tela`,`Identificando os fluxos de navegação`,`Interpretando suas interações`,`Gerando os contextos do cenário`,`Escrevendo os passos em Gherkin`,`Traduzindo para o teste Playwright`,`Dando os retoques finais`],r=[`Analisando os eventos gravados`,`Identificando os campos de usuário e senha`,`Escrevendo o fluxo de autenticação`];return(i,a)=>{let o=X;return n(),m(o,{phrases:e.auth?r:t,"data-testid":e.auth?`auth-carregando`:`contexto-carregando`},null,8,[`phrases`,`data-testid`])}}}),{__name:`ScenarioReviewLoading`}),Ye=Object.assign(o({__name:`modal`,props:C({slug:{},isPublic:{type:Boolean,default:!1},scenario:{default:null}},{open:{type:Boolean,default:!1},openModifiers:{}}),emits:C([`generated`,`rerecord`,`resume`],[`update:open`]),setup(e,{emit:t}){let r=y(e,`open`),o=t,s=d(()=>e.scenario?.is_auth===!0),l=d(()=>e.scenario.spec.replace(/^tests\//,``).replace(/\.(spec|setup)\.ts$/,``)),{state:u,url:f}=ne();function p(){return{title:``,tags:[],domain:``,path:``,gherkin:``,playwright:``}}let b=h(`review`),x=h(p()),S=h(null);w(r,e=>{e&&(b.value=`review`,x.value=p(),S.value=null)});let C=d(()=>b.value===`edit`?`Revise os contextos`:s.value?`Revise a gravação do login`:e.scenario?`Revise a gravação retomada`:`Revise seus eventos`),E=d(()=>s.value?`Gerar autenticação`:`Gerar cenário`),D=d(()=>u.value.events.filter(e=>e.type&&e.timestamp).sort((e,t)=>e.timestamp-t.timestamp)),O=h(!1),k=d(()=>{let e=D.value.find(e=>e.url);if(!e?.url)return null;try{return new URL(e.url).origin}catch{return null}}),A=d(()=>ye(D.value));async function j(){try{let t=await I(`/api/projects/${e.slug}/auth/record`,{method:`POST`,body:{baseUrl:k.value,events:A.value}});r.value=!1,o(`generated`,t)}catch(e){console.error(`Falha ao gravar a autenticação:`,e),S.value=z(e,`Não foi possível gerar a autenticação a partir da gravação.`),b.value=`review`}}async function M(){if(!k.value){S.value=`Nenhuma navegação registrada na gravação.`;return}if(S.value=null,b.value=`loading`,s.value)return j();try{let t=await I(`/api/projects/${e.slug}/tests/draft`,{method:`POST`,body:{baseUrl:k.value,events:A.value,isPublic:e.isPublic}});x.value=e.scenario?{...t,title:e.scenario.title,path:l.value,domain:e.scenario.domain??``}:t,b.value=`edit`}catch(e){S.value=z(e,`Não foi possível gerar o cenário. Tente novamente.`),b.value=`review`}}async function N(){if(x.value){O.value=!0,S.value=null;try{let t=await I(e.scenario?`/api/projects/${e.slug}/scenarios/${l.value}`:`/api/projects/${e.slug}/tests`,{method:e.scenario?`PATCH`:`POST`,body:{...x.value,events:A.value}});r.value=!1,o(`generated`,t)}catch(e){S.value=z(e,`Não foi possível salvar o cenário. Tente novamente.`)}finally{O.value=!1}}}function P(){r.value=!1,o(`rerecord`)}function R(e){r.value=!1,o(`resume`,D.value.slice(0,e))}return(t,o)=>{let l=Je,d=H,p=Y,h=G,y=B,w=L,k=F;return n(),m(k,{open:r.value,"onUpdate:open":o[3]||=e=>r.value=e,title:v(C),dismissable:!1,loading:v(b)===`loading`,wide:``},{body:T(()=>[v(b)===`loading`?(n(),m(l,{key:0,auth:v(s)},null,8,[`auth`])):v(b)===`edit`?(n(),c(g,{key:1},[_(d,{warnings:v(x).warnings,slug:e.slug,class:`mb-4`},null,8,[`warnings`,`slug`]),_(p,{draft:v(x),"onUpdate:draft":o[0]||=e=>i(x)?x.value=e:null,novo:``},null,8,[`draft`])],64)):(n(),m(h,{key:2,events:v(D),"video-src":v(u).videoSessionId?`${v(f)}/recording/${v(u).videoSessionId}`:null,"recording-started-at":v(u).recordingStartedAt,resumable:``,onResume:R},null,8,[`events`,`video-src`,`recording-started-at`])),v(S)?(n(),m(y,{key:3,color:`error`,variant:`soft`,description:v(S),class:`mt-4`,"data-testid":`revisao-erro`},null,8,[`description`])):a(``,!0)]),footer:T(()=>[v(b)===`edit`?(n(),c(g,{key:0},[_(w,{label:`Cancelar`,color:`neutral`,variant:`ghost`,"data-testid":`contexto-cancelar`,onClick:o[1]||=e=>r.value=!1}),_(w,{label:`Enviar`,loading:v(O),"data-testid":`contexto-enviar`,onClick:N},null,8,[`loading`])],64)):(n(),c(g,{key:1},[_(w,{label:`Gravar novamente`,color:`neutral`,variant:`soft`,class:`mr-auto`,"data-testid":`revisao-regravar`,onClick:P}),_(w,{label:`Cancelar`,color:`neutral`,variant:`ghost`,"data-testid":`revisao-cancelar`,onClick:o[2]||=e=>r.value=!1}),_(w,{label:v(E),"data-testid":`revisao-gerar`,onClick:M},null,8,[`label`])],64))]),_:1},8,[`open`,`title`,`loading`])}}}),{__name:`ScenarioReviewModal`}),Xe=`O seletor veio de uma gravação antiga. Regravar o passo costuma resolver, porque a captura hoje prefere data-testid.`,Ze=`Confira a URL do ambiente ativo em Ambientes, e se o sistema está no ar.`,Qe=`Peça um data-testid para esse elemento no sistema testado: é o único seletor que não depende de posição nem de estilo.`,$e=`O elemento existe, então o seletor está certo. Falta o passo anterior que o revela, como abrir o modal ou a aba.`,et=/^Locator:\s*(.+)$/m,tt=/^Timeout:\s*(\d+)ms$/m,nt=/element\(s\) not found/,rt=/page\.goto: (net::[A-Z_]+) at (\S+)/,it=/strict mode violation: (.+?) resolved to (\d+) elements/,at=/Test timeout of (\d+)ms exceeded/,ot=/locator\.(\w+): Timeout (\d+)ms exceeded/,st=/waiting for (.+)$/m,ct=/^Expected(?: string)?:\s*(".*")$/m,lt=/^Received(?: string)?:\s*(".*")$/m,ut={"net::ERR_NAME_NOT_RESOLVED":`o domínio não existe`,"net::ERR_CONNECTION_REFUSED":`nada está escutando nesse endereço`,"net::ERR_CONNECTION_TIMED_OUT":`a conexão expirou`,"net::ERR_CERT_AUTHORITY_INVALID":`o certificado não é confiável`,"net::ERR_INTERNET_DISCONNECTED":`a máquina está sem rede`},dt={click:`clicar em`,fill:`preencher`,check:`marcar`,uncheck:`desmarcar`,press:`digitar em`,hover:`passar o mouse por`,selectOption:`escolher a opção de`};function Z(e){return`${Number(e)/1e3}s`}function Q(e){return(e.match(/^(?:getBy\w+|locator)\(\s*(['"`])((?:\\.|(?!\1).)*)\1/)?.[2]??e).trim()}function ft(e){return(e.split(`
7
- `).find(e=>e.trim())?.trim()??``).replace(/^(?:TimeoutError|Error):\s*/,``)}function pt(e){if(!e?.trim())return null;let t=e.match(rt);if(t){let e=ut[t[1]]??`a navegação falhou`;return{summary:`O endereço ${t[2]} não respondeu: ${e}.`,hint:Ze}}let n=e.match(it);if(n)return{summary:`O seletor ${Q(n[1])} casou ${n[2]} elementos, então não identifica um só.`,hint:Qe};let r=e.match(ct),i=e.match(lt),a=e.match(et);if(r&&i)return{summary:`${a?Q(a[1]):`A página`} mostrava ${i[1]}, e o cenário esperava ${r[1]}.`,hint:null};let o=e.match(at);if(o){let e=a?`, esperando por ${Q(a[1])}`:` e foi interrompido`;return{summary:`O cenário passou de ${Z(o[1])} no total${e}.`,hint:`O passo que estiver em vermelho na timeline é onde ele ficou preso.`}}let s=e.match(tt);if(a&&s){let t=Q(a[1]);return nt.test(e)?{summary:`Não achei ${t} na página depois de ${Z(s[1])}.`,hint:Xe}:{summary:`${t} está na página, mas continuou escondido por ${Z(s[1])}.`,hint:$e}}let c=e.match(ot);if(c){let t=dt[c[1]]??`usar (${c[1]})`,n=e.match(st);return{summary:`Não consegui ${t} ${n?Q(n[1]):`o elemento`}: o elemento não ficou pronto em ${Z(c[2])}.`,hint:Xe}}return{summary:ft(e),hint:null}}var mt={key:0,class:`mt-1 text-sm`},ht={"data-testid":`execucao-step-erro`},gt={key:0,class:`mt-0.5 text-dimmed`,"data-testid":`execucao-step-dica`},_t={class:`mt-1`},vt={class:`mt-1 block whitespace-pre-wrap font-mono text-xs text-dimmed`,"data-testid":`execucao-step-erro-cru`},yt=Object.assign(o({__name:`failure`,props:{error:{}},setup(e){let t=d(()=>pt(e.error));return(r,i)=>v(t)?(n(),c(`div`,mt,[f(`p`,ht,[i[0]||=f(`span`,{class:`font-semibold text-error`},`Erro:`,-1),s(` `+b(v(t).summary),1)]),v(t).hint?(n(),c(`p`,gt,b(v(t).hint),1)):a(``,!0),f(`details`,_t,[i[1]||=f(`summary`,{class:`cursor-pointer text-xs text-dimmed`},` Mensagem do Playwright `,-1),f(`code`,vt,b(e.error),1)])])):a(``,!0)}}),{__name:`ScenarioTestRunFailure`}),bt={class:`flex flex-col`},xt=[`data-status`],St={class:`flex flex-col items-center`},Ct={key:0,class:`w-px grow min-h-4 -mb-4 bg-inverted/30`},wt={class:`min-w-0`},Tt={class:`text-base`,"data-testid":`execucao-step-titulo`},Et=Object.assign(o({__name:`steps`,props:{steps:{default:()=>[]}},setup(e){let t={waiting:`i-ic-round-radio-button-unchecked`,running:`line-md:loading-twotone-loop`,success:`i-ic-round-check-circle`,failed:`i-ic-round-error`},r={waiting:`text-dimmed`,running:`text-neutral`,success:`text-success`,failed:`text-error`};return(i,o)=>{let s=R,u=yt;return n(),c(`ol`,bt,[(n(!0),c(g,null,l(e.steps,(i,o)=>(n(),c(`li`,{key:o,"data-testid":`execucao-step`,"data-status":i.status,class:`flex items-stretch gap-3 pb-4 last:pb-0`},[f(`div`,St,[_(s,{name:t[i.status],class:D([`size-6 shrink-0 transition-colors`,r[i.status]])},null,8,[`name`,`class`]),o<e.steps.length-1?(n(),c(`span`,Ct)):a(``,!0)]),f(`div`,wt,[f(`p`,Tt,b(i.title),1),i.status===`failed`&&i.error?(n(),m(u,{key:0,error:i.error},null,8,[`error`])):a(``,!0)])],8,xt))),128))])}}}),{__name:`ScenarioTestRunSteps`}),Dt={class:`flex w-full items-start justify-between gap-4`},Ot={class:`flex flex-col pt-6 gap-2`},kt={key:0,class:`text-xl font-bold`},At={key:0,class:`dots`},jt={class:`mt-2 text-xl font-bold`},Mt={class:`mt-6 shrink-0`},Nt={key:0,class:`mb-6 space-y-0.5 text-sm`,"data-testid":`execucao-detalhes`},Pt={class:`font-semibold`},Ft={key:0},It={key:1},Lt=[`src`],Rt={class:`block whitespace-pre-wrap font-mono text-xs`},zt={key:3,class:`mb-3 text-lg font-semibold`},Bt=Object.assign(V(o({__name:`modal`,props:C({running:{type:Boolean,default:!1},passed:{type:Boolean,default:!1},steps:{default:()=>[]},videoUrl:{default:null},projectName:{},scenarioName:{},branch:{default:null},testedAt:{default:null},playwright:{default:null},output:{default:null},kind:{default:`cenario`},runningTitle:{default:null}},{open:{type:Boolean,default:!1},openModifiers:{}}),emits:C([`fix`],[`update:open`]),setup(e,{emit:t}){let i=t,o=y(e,`open`),{configured:l}=te(),u=d(()=>e.kind===`autenticacao`),p=d(()=>u.value?`Autenticação`:`Cenário`),h=d(()=>e.runningTitle??(u.value?`Testando autenticação...`:`Testando cenário...`)),x=d(()=>u.value?`Resultado da autenticação`:`Resultado do teste`),S=d(()=>e.steps.findIndex(e=>e.status===`failed`));function C(e){let t=e.target;t.currentTime=t.duration*.25}return(t,u)=>{let d=ae,y=L,w=ee,E=X,O=B,k=Et,A=q,j=F;return n(),m(j,{open:o.value,"onUpdate:open":u[2]||=e=>o.value=e,dismissable:!e.running,wide:``},r({header:T(()=>[f(`div`,Dt,[f(`div`,Ot,[e.running?(n(),c(`p`,kt,[s(b(v(h)),1),e.runningTitle?(n(),c(`span`,At)):a(``,!0)])):(n(),c(g,{key:1},[_(d,{class:`self-start`,color:e.passed?`success`:`error`,icon:e.passed?`i-ic-round-check-circle`:`i-ic-round-error`,label:e.passed?`Sucesso`:`Falha`,"data-testid":`execucao-status`},null,8,[`color`,`icon`,`label`]),f(`p`,jt,b(v(x)),1)],64))]),!e.running&&!e.passed&&v(S)!==-1?(n(),m(w,{key:0,text:v(re),disabled:v(l),"delay-duration":0,arrow:``},{default:T(()=>[f(`span`,Mt,[_(y,{label:`Corrigir`,"trailing-icon":`i-ic-round-auto-awesome`,disabled:!v(l),class:D(v(l)?``:`pointer-events-none`),"data-testid":`execucao-corrigir`,onClick:u[0]||=e=>i(`fix`)},null,8,[`disabled`,`class`])])]),_:1},8,[`text`,`disabled`])):a(``,!0)])]),body:T(()=>[e.running&&e.steps.length===0?(n(),m(E,{key:0,phrases:[`Iniciando a execução`],"data-testid":`execucao-iniciando`})):(n(),c(g,{key:1},[e.running?a(``,!0):(n(),c(`div`,Nt,[f(`p`,null,[u[3]||=f(`span`,{class:`font-semibold`},`Projeto:`,-1),s(` `+b(e.projectName),1)]),f(`p`,null,[f(`span`,Pt,b(v(p))+`:`,1),s(` `+b(e.scenarioName),1)]),e.branch?(n(),c(`p`,Ft,[u[4]||=f(`span`,{class:`font-semibold`},`Branch:`,-1),s(` `+b(e.branch),1)])):a(``,!0),e.testedAt?(n(),c(`p`,It,[u[5]||=f(`span`,{class:`font-semibold`},`Testado em:`,-1),s(` `+b(e.testedAt),1)])):a(``,!0)])),e.videoUrl?(n(),c(`video`,{key:1,src:e.videoUrl,preload:`metadata`,controls:``,class:`mx-auto mb-6 w-3/4 rounded-lg bg-elevated`,"data-testid":`execucao-video`,onLoadedmetadata:C},null,40,Lt)):a(``,!0),e.output?(n(),m(O,{key:2,color:`error`,variant:`soft`,icon:`i-ic-round-error`,title:`A execução não chegou a começar`,class:`mb-6`,"data-testid":`execucao-saida`},{description:T(()=>[u[6]||=f(`p`,{class:`mb-2`},` O Playwright encerrou antes de rodar qualquer passo. Saída do runner: `,-1),f(`code`,Rt,b(e.output),1)]),_:1})):a(``,!0),e.steps.length?(n(),c(`p`,zt,` Timeline de eventos `)):a(``,!0),_(k,{steps:e.steps},null,8,[`steps`]),e.playwright?(n(),c(g,{key:4},[u[7]||=f(`p`,{class:`mt-6 mb-3 text-lg font-semibold`},` Código executado `,-1),_(A,{"model-value":e.playwright,language:`typescript`,readonly:``,testid:`execucao-playwright`},null,8,[`model-value`])],64)):a(``,!0)],64))]),_:2},[e.running?void 0:{name:`footer`,fn:T(()=>[_(y,{label:`Fechar`,color:`neutral`,variant:`ghost`,"data-testid":`execucao-fechar`,onClick:u[1]||=e=>o.value=!1})]),key:`0`}]),1032,[`open`,`dismissable`])}}}),[[`__scopeId`,`data-v-a772cb43`]]),{__name:`ScenarioTestRunModal`}),Vt={pending:`running`,success:`success`,failed:`failed`,skipped:`waiting`};function Ht(e){return`/runner/video?${new URLSearchParams({path:e})}`}function Ut(e){return`/api/projects/${e}/report/`}function $(e){return e.toLocaleString(`pt-BR`,{dateStyle:`short`,timeStyle:`short`})}function Wt(e){let t=h([]),n=h([]),r=h(!1),i=h(!1),a=h(null),o=h(null),s=h(null),c=d(()=>n.value.map(e=>({...e,steps:t.value.map((e,t)=>({step:e,arrival:t})).filter(({step:t})=>t.testId===e.id).sort((e,t)=>(e.step.order??1/0)-(t.step.order??1/0)||e.arrival-t.arrival).map(({step:e})=>e)})));function l(){t.value=[],n.value=[],a.value=null,o.value=null,s.value=null,i.value=!1}function u(e,t){return!t.testId||!e.testId||e.testId===t.testId}function f(e,n){let r=[...t.value];n.forEach((t,n)=>{let i=r.findIndex(e=>e.title===t&&e.status===`waiting`&&!e.testId),a={testId:e,order:n,title:t,status:`waiting`};i===-1?r.push(a):r[i]=a}),t.value=r}function p({spec:c,grep:d},p){l(),r.value=!0;let m=new URLSearchParams({...c?{spec:c}:{},...d?{grep:d}:{}}),h=new EventSource(`/api/projects/${e()}/run-stream?${m}`);h.onmessage=e=>{let c=JSON.parse(e.data);if(c.event===`run:started`&&(t.value=(c.steps??[]).map(e=>({title:e,status:`waiting`}))),c.event===`step`){if(c.status===`pending`){let e=t.value.findIndex(e=>e.title===c.title&&e.status===`waiting`&&e.testId===c.testId),n=e===-1?t.value.findIndex(e=>e.title===c.title&&e.status===`waiting`&&u(e,c)):e,r=n===-1?void 0:t.value[n],i={testId:c.testId,order:r?.order,title:c.title,status:`running`};n===-1?t.value=[...t.value,i]:t.value[n]=i;return}let e=t.value.findLastIndex(e=>e.title===c.title&&e.status===`running`&&u(e,c)),n=e!==-1||c.status!==`failed`?e:t.value.findLastIndex(e=>e.title===c.title&&e.status===`success`&&u(e,c));n!==-1&&(t.value[n]={testId:t.value[n].testId??c.testId,order:t.value[n].order,title:c.title,status:Vt[c.status],error:c.error??null})}if(c.event===`test`){if(c.id){!n.value.some(e=>e.id===c.id)&&c.steps?.length&&f(c.id,c.steps);let e={id:c.id,title:c.title,status:Vt[c.status],error:c.error??null},t=n.value.findIndex(e=>e.id===c.id);t===-1?n.value=[...n.value,e]:n.value[t]=e}c.status!==`pending`&&c.videoPath&&(a.value=Ht(c.videoPath))}c.event===`run:finished`&&(h.close(),r.value=!1,i.value=c.passed,s.value=c.output??null,o.value=$(new Date),p?.())},h.onerror=()=>{h.close(),r.value=!1,o.value=$(new Date),t.value.length===0&&(t.value=[{title:`Não foi possível executar o teste.`,status:`failed`}])}}return{steps:t,tests:c,running:r,passed:i,videoUrl:a,testedAt:o,output:s,failedStep:d(()=>t.value.find(e=>e.status===`failed`)),start:p,reset:l}}function Gt(e){return e===`@read`?`success`:e===`@write`?`warning`:`primary`}export{pe as _,Ht as a,yt as c,Y as d,ze as f,ve as g,G as h,Wt as i,Ye as l,q as m,$ as n,Bt as o,Re as p,Ut as r,Et as s,Gt as t,X as u,H as v};
@@ -1 +0,0 @@
1
- import{At as e,En as t,F as n,G as r,H as i,I as a,It as o,M as s,N as c,P as l,Pn as u,S as d,U as f,Wn as p,Zt as m,_r as h,cn as g,ht as _,in as v,ln as y,pr as b,wt as x}from"./DMHcp4U1.js";import{Y as S,rt as C,tt as w}from"./cRY3ZoRz.js";import{a as T,i as E,n as D,t as O}from"./DKtXkDi_.js";import{ct as k,i as A,l as ee,t as j}from"./CFDrxEXS.js";import{a as te,i as ne,l as re,n as ie,t as ae}from"./DjT2EspM.js";import{t as oe}from"./DMFeBIkq.js";import{i as M,n as N,r as se,t as ce}from"./B1M4anPy.js";import{t as le}from"./DB7GBG_m.js";import{t as P}from"./DnipZKP_.js";import{t as ue}from"./B6XOqJ2u.js";import{_ as de,a as fe,d as F,f as pe,g as me,h as he,i as ge,l as _e,m as ve,n as ye,o as be,p as xe,t as Se,u as I,v as Ce}from"./2wdMJ9Eu.js";var we=Object.assign(r({__name:`auth-status`,props:{status:{}},setup(t){let r=s(()=>({configured:{label:`Configurada`,icon:`i-ic-round-lock`,color:`success`},failing:{label:`Falhando`,icon:`i-ic-round-error`,color:`error`},skipped:{label:`Dispensada`,icon:`i-ic-round-lock-open`,color:`neutral`}})[t.status]??null);return(t,i)=>{let a=M;return p(r)?(e(),l(a,{key:0,variant:`soft`,icon:p(r).icon,color:p(r).color,label:p(r).label,"data-testid":`cenario-auth-status`},null,8,[`icon`,`color`,`label`])):n(``,!0)}}}),{__name:`ScenarioAuthStatus`}),Te={class:`mb-3 flex flex-col gap-2 sm:flex-row`},L={key:1,class:`grid gap-3 sm:grid-cols-2`},R={class:`flex items-center justify-between gap-4`},Ee={class:`min-w-0`},z={class:`truncate`},De={class:`text-muted`},Oe={key:2,class:`mt-4 flex justify-center`},B=6,ke=Object.assign(r({__name:`history`,props:{runs:{default:()=>[]}},emits:[`open`],setup(r,{emit:m}){let g=m,_=[{label:`Todos`,value:`todos`},{label:`Sucesso`,value:`sucesso`},{label:`Falha`,value:`falha`}],b=u(``),x=u(`todos`),S=u(1);function C(e){return new Date(e.started_at).toLocaleString(`pt-BR`,{dateStyle:`short`,timeStyle:`short`})}function w(e){return`${(e.duration_ms/1e3).toLocaleString(`pt-BR`,{maximumFractionDigits:1})}s`}function T(e){return[C(e),e.branch,e.author,...e.steps.filter(e=>e.status===`failed`).map(e=>e.title)].join(` `).toLowerCase()}let D=s(()=>r.runs.filter(e=>(x.value===`todos`||x.value===`sucesso`===e.passed)&&T(e).includes(b.value.trim().toLowerCase()))),O=s(()=>D.value.slice((S.value-1)*B,S.value*B));return v([b,x],()=>{S.value=1}),(s,u)=>{let m=me,v=E,T=oe,k=M,A=N,ee=le;return e(),a(`section`,null,[r.runs.length===0?(e(),l(m,{key:0,icon:`i-ic-round-play-circle-outline`,title:`Nenhum teste executado ainda`,description:`Rode o cenário em Testar. Cada execução fica registrada aqui com o resultado e o código que rodou.`,testid:`cenario-execucoes-vazio`})):(e(),a(d,{key:1},[c(`div`,Te,[f(v,{modelValue:p(b),"onUpdate:modelValue":u[0]||=e=>t(b)?b.value=e:null,icon:`i-ic-round-search`,placeholder:`Buscar por data, branch, autor ou step que falhou`,class:`flex-1`,"data-testid":`execucoes-busca`},null,8,[`modelValue`]),f(T,{modelValue:p(x),"onUpdate:modelValue":u[1]||=e=>t(x)?x.value=e:null,items:_,class:`sm:w-40`,"data-testid":`execucoes-status`},null,8,[`modelValue`])]),p(D).length===0?(e(),l(m,{key:0,icon:`i-ic-round-search-off`,title:`Nenhuma execução encontrada`,description:`Nada no histórico casa com a busca e o status escolhidos. Limpe os filtros para ver as execuções de novo.`,testid:`cenario-execucoes-sem-resultado`})):(e(),a(`div`,L,[(e(!0),a(d,null,o(p(O),t=>(e(),l(A,{key:t.started_at,class:`cursor-pointer transition-colors hover:bg-accented/75`,"data-testid":`cenario-execucao`,"data-status":t.passed?`success`:`failed`,onClick:e=>g(`open`,t)},{default:y(()=>[c(`div`,R,[c(`div`,Ee,[u[3]||=c(`p`,{class:`text-sm text-muted`},` Testado em `,-1),c(`p`,z,[i(h(C(t))+` `,1),c(`span`,De,`em `+h(w(t)),1)])]),f(k,{variant:`soft`,color:t.passed?`success`:`error`,icon:t.passed?`i-ic-round-check-circle`:`i-ic-round-error`,label:t.passed?`Sucesso`:`Falha`},null,8,[`color`,`icon`,`label`])])]),_:2},1032,[`data-status`,`onClick`]))),128))])),p(D).length>B?(e(),a(`div`,Oe,[f(ee,{page:p(S),"onUpdate:page":u[2]||=e=>t(S)?S.value=e:null,variant:`soft`,total:p(D).length,"items-per-page":B,"data-testid":`execucoes-paginacao`},null,8,[`page`,`total`])])):n(``,!0)],64))])}}}),{__name:`ScenarioTestRunHistory`}),Ae=Object.assign(r({__name:`modal`,props:_({slug:{},scenario:{},resumed:{default:null}},{open:{type:Boolean,default:!1},openModifiers:{}}),emits:_([`updated`],[`update:open`]),setup(r,{emit:i}){let a=m(r,`open`),o=i,c=u(r.resumed?.draft??pe(r.scenario)),d=u(!1),h=u(null);v(a,e=>{e&&(c.value=r.resumed?.draft??pe(r.scenario),h.value=null)});let g=s(()=>r.scenario.spec.replace(/^tests\//,``).replace(/\.(spec|setup)\.ts$/,``));async function _(){d.value=!0,h.value=null;try{let e=await k(`/api/projects/${r.slug}/scenarios/${g.value}`,{method:`PATCH`,body:{...c.value,events:r.resumed?.events}});a.value=!1,o(`updated`,e)}catch(e){h.value=j(e,`Não foi possível salvar o cenário.`)}finally{d.value=!1}}return(i,o)=>{let s=F,u=P,m=A,g=D;return e(),l(g,{open:a.value,"onUpdate:open":o[2]||=e=>a.value=e,title:r.scenario.is_auth?`Editar autenticação`:`Editar cenário`,wide:``},{body:y(()=>[f(s,{draft:p(c),"onUpdate:draft":o[0]||=e=>t(c)?c.value=e:null,"is-auth":r.scenario.is_auth},null,8,[`draft`,`is-auth`]),p(h)?(e(),l(u,{key:0,color:`error`,variant:`soft`,description:p(h),class:`mt-4`},null,8,[`description`])):n(``,!0)]),footer:y(()=>[f(m,{label:`Cancelar`,color:`neutral`,variant:`ghost`,"data-testid":`cenario-editar-cancelar`,onClick:o[1]||=e=>a.value=!1}),f(m,{label:`Salvar`,loading:p(d),"data-testid":`cenario-editar-salvar`,onClick:_},null,8,[`loading`])]),_:1},8,[`open`,`title`])}}}),{__name:`ScenarioEditModal`}),V=Object.assign(r({__name:`loading`,setup(t){let n=[`Analisando os eventos gravados`,`Procurando seletores frágeis`,`Pensando em nomes de data-testid`,`Preparando as sugestões`];return(t,r)=>{let i=I;return e(),l(i,{phrases:n,"data-testid":`sugestoes-carregando`})}}}),{__name:`ScenarioSuggestionsLoading`}),H={key:3,class:`flex flex-col gap-3`},U={class:`flex gap-3`},W={class:`flex size-9 shrink-0 items-center justify-center rounded-md bg-primary/10`},G={class:`min-w-0 flex-1`},je={class:`text-sm font-semibold`},Me={class:`text-xs text-dimmed mt-0.5`},Ne={class:`flex flex-wrap items-center gap-2 mt-3`},Pe={class:`font-mono`},Fe=Object.assign(r({__name:`modal`,props:_({loading:{type:Boolean,default:!1},suggestions:{default:()=>[]},error:{default:null}},{open:{type:Boolean,default:!1},openModifiers:{}}),emits:[`update:open`],setup(t){let n=m(t,`open`),r=u(null);function s(e,t){navigator.clipboard?.writeText(e),r.value=t,setTimeout(()=>{r.value===t&&(r.value=null)},1500)}return(u,m)=>{let g=V,_=P,v=ee,b=M,x=A,S=te,C=N,w=D;return e(),l(w,{open:n.value,"onUpdate:open":m[1]||=e=>n.value=e,title:`Sugestões de seletores`,loading:t.loading,wide:``},{body:y(()=>[t.loading?(e(),l(g,{key:0})):t.error?(e(),l(_,{key:1,color:`error`,variant:`soft`,icon:`i-ic-round-error-outline`,title:`Não foi possível gerar sugestões`,description:t.error},null,8,[`description`])):t.suggestions.length===0?(e(),l(_,{key:2,color:`success`,variant:`soft`,icon:`i-ic-round-check-circle`,title:`Nenhuma sugestão necessária`,description:`Todos os eventos já têm um data-testid.`,"data-testid":`sugestoes-vazio`})):(e(),a(`div`,H,[(e(!0),a(d,null,o(t.suggestions,(t,n)=>(e(),l(C,{key:n,"data-testid":`sugestao-card`},{default:y(()=>[c(`div`,U,[c(`div`,W,[f(v,{name:`i-ic-round-select-all`,class:`size-5 text-primary`})]),c(`div`,G,[c(`p`,je,h(t.event),1),c(`p`,Me,h(t.reason),1),c(`div`,Ne,[f(b,{color:`error`,class:`font-mono line-through decoration-error/50`,size:`xl`},{default:y(()=>[i(h(t.currentSelector),1)]),_:2},1024),f(v,{name:`i-ic-round-keyboard-arrow-right`,class:`size-8 shrink-0 text-dimmed`}),f(S,{text:p(r)===n?`Copiado!`:`Clique para copiar`,"delay-duration":0,arrow:``},{default:y(()=>[f(x,{color:p(r)===n?`success`:`primary`,variant:`soft`,"trailing-icon":p(r)===n?`i-ic-round-check`:`i-ic-round-content-copy`,"data-testid":`sugestao-testid`,size:`lg`,onClick:e=>s(t.suggestedTestId,n)},{default:y(()=>[c(`code`,Pe,`data-testid="`+h(t.suggestedTestId)+`"`,1)]),_:2},1032,[`color`,`trailing-icon`,`onClick`])]),_:2},1032,[`text`])])])])]),_:2},1024))),128))]))]),footer:y(()=>[f(x,{label:`Fechar`,color:`neutral`,variant:`ghost`,"data-testid":`sugestoes-fechar`,onClick:m[0]||=e=>n.value=!1})]),_:1},8,[`open`,`loading`])}}}),{__name:`ScenarioSuggestionsModal`}),Ie={class:`flex flex-col gap-4`,"data-testid":`auth-credenciais`},Le=Object.assign(r({__name:`credentials`,props:_({slug:{}},{open:{type:Boolean,default:!1},openModifiers:{}}),emits:_([`saved`],[`update:open`]),setup(r,{emit:i}){let a=m(r,`open`),o=i,s=u(``),d=u(``),h=u(!1),g=u(null);v(a,e=>{e&&(s.value=``,d.value=``,g.value=null)});async function _(){h.value=!0,g.value=null;try{await k(`/api/projects/${r.slug}/auth/credentials`,{method:`POST`,body:{username:s.value,password:d.value}}),a.value=!1,o(`saved`)}catch{g.value=`Não foi possível salvar as credenciais. Tente novamente.`}finally{h.value=!1}}return(r,i)=>{let o=P,u=E,m=T,v=A,b=D;return e(),l(b,{open:a.value,"onUpdate:open":i[3]||=e=>a.value=e,dismissable:!1,title:`Credenciais do login`},{body:y(()=>[c(`div`,Ie,[f(o,{color:`warning`,variant:`soft`,icon:`i-ic-round-key`,title:`Não identifiquei usuário e senha nesta gravação`,description:`O login é executado de novo a cada rodada de testes, então ele precisa das credenciais reais. Elas ficam só no .env local do projeto, que não é versionado.`}),f(m,{label:`Usuário`},{default:y(()=>[f(u,{modelValue:p(s),"onUpdate:modelValue":i[0]||=e=>t(s)?s.value=e:null,class:`w-full`,autocomplete:`off`,"data-testid":`auth-credenciais-usuario`},null,8,[`modelValue`])]),_:1}),f(m,{label:`Senha`},{default:y(()=>[f(u,{modelValue:p(d),"onUpdate:modelValue":i[1]||=e=>t(d)?d.value=e:null,class:`w-full`,type:`password`,autocomplete:`off`,"data-testid":`auth-credenciais-senha`},null,8,[`modelValue`])]),_:1}),p(g)?(e(),l(o,{key:0,color:`error`,variant:`soft`,description:p(g),"data-testid":`auth-credenciais-erro`},null,8,[`description`])):n(``,!0)])]),footer:y(()=>[f(v,{label:`Cancelar`,color:`neutral`,variant:`ghost`,"data-testid":`auth-credenciais-cancelar`,onClick:i[2]||=e=>a.value=!1}),f(v,{label:`Salvar e executar`,loading:p(h),disabled:!p(s)||!p(d),"data-testid":`auth-credenciais-salvar`,onClick:_},null,8,[`loading`,`disabled`])]),_:1},8,[`open`])}}}),{__name:`ProjectAuthCredentials`}),Re={key:2,"data-testid":`correcao-proposta`},ze={class:`mb-3 text-sm text-muted`,"data-testid":`correcao-resumo`},Be=Object.assign(r({__name:`modal`,props:_({loading:{type:Boolean,default:!1},fix:{default:null},error:{default:null},applying:{type:Boolean,default:!1}},{open:{type:Boolean,default:!1},openModifiers:{}}),emits:_([`apply`,`discard`],[`update:open`]),setup(t,{emit:r}){let i=r,o=m(t,`open`);return(r,s)=>{let u=I,d=P,p=ve,m=A,g=D;return e(),l(g,{open:o.value,"onUpdate:open":s[2]||=e=>o.value=e,title:`Correção proposta`,loading:t.loading,dismissable:!t.loading&&!t.applying,wide:``},{body:y(()=>[t.loading?(e(),l(u,{key:0,phrases:[`Analisando a falha`,`Procurando um seletor melhor`,`Reescrevendo o teste`],"data-testid":`correcao-carregando`})):t.error?(e(),l(d,{key:1,color:`error`,variant:`subtle`,icon:`i-ic-round-error`,title:`Não foi possível gerar a correção`,description:t.error,"data-testid":`correcao-erro`},null,8,[`description`])):t.fix?(e(),a(`div`,Re,[c(`p`,ze,h(t.fix.summary),1),f(p,{"model-value":t.fix.playwright,language:`typescript`,readonly:``,testid:`correcao-spec`},null,8,[`model-value`])])):n(``,!0)]),footer:y(()=>[f(m,{label:`Descartar`,color:`neutral`,variant:`ghost`,disabled:t.applying,"data-testid":`correcao-descartar`,onClick:s[0]||=e=>i(`discard`)},null,8,[`disabled`]),t.fix?(e(),l(m,{key:0,label:`Aplicar`,icon:`i-ic-round-check`,loading:t.applying,disabled:t.applying,"data-testid":`correcao-aplicar`,onClick:s[1]||=e=>i(`apply`)},null,8,[`loading`,`disabled`])):n(``,!0)]),_:1},8,[`open`,`loading`,`dismissable`])}}}),{__name:`ScenarioFixModal`}),Ve=[`configured`,`failing`];function He(e,t=!1){if(!(t||!Ve.includes(e.auth_status)))return e.storage_state}var Ue={class:`flex items-start justify-between gap-4`},We={class:`flex flex-col gap-1 min-w-0`},Ge={class:`flex items-center gap-2`},Ke={class:`text-2xl font-bold truncate`,"data-testid":`cenario-titulo`},qe={class:`text-sm text-muted italic truncate`,"data-testid":`cenario-caminho`},Je={class:`flex gap-2 shrink-0`},Ye={key:0,class:`flex flex-wrap gap-1 mt-4`,"data-testid":`cenario-tags`},Xe={key:1,class:`text-xs text-dimmed mt-2`},Ze={key:2,class:`mt-6 flex flex-col gap-3`},Qe={key:3,class:`mt-8 flex flex-col items-center gap-3 py-10 text-center`,"data-testid":`auth-intro`},$e={class:`flex size-12 items-center justify-center rounded-lg bg-elevated`},et=[`data-testid`],tt={key:5,class:`mt-4`},nt=r({__name:`[...scenario]`,async setup(r){let m,_,T=C(),E=s(()=>T.params.projectSlug),D=s(()=>T.params.scenario.join(`/`)),oe=u(!1);x(()=>{oe.value=!0});let{data:N,refresh:le}=([m,_]=g(()=>O(`/api/projects/${E.value}`,`$3yUoA-eM18`)),m=await m,_(),m),{data:F,refresh:I}=([m,_]=g(()=>O(`/api/projects/${E.value}/scenarios/${D.value}`,`$lM5rtpaVlj`)),m=await m,_(),m);if(!N.value||!F.value)throw S({statusCode:404,message:`Cenário não encontrado.`});let Te=s(()=>ce(N.value)),L=u(!1),R=u(!1);async function Ee(){R.value=!0;try{await k(`/api/projects/${E.value}/scenarios/${D.value}`,{method:`DELETE`}),await w(`/projects/${E.value}`)}finally{R.value=!1}}let z=u(!1);async function De(){z.value=!0;try{await k(`/api/projects/${E.value}/scenario-skip`,{method:`PATCH`,body:{scenarioId:D.value,skipped:!F.value.skipped}}),await I()}finally{z.value=!1}}let Oe=s(()=>new Date(F.value.updated_at).toLocaleString(`pt-BR`,{dateStyle:`short`,timeStyle:`short`})),{configured:B}=ne(),V=u(!1),H=u(!1),U=u(!1),W=u([]),G=u(null);v(H,async e=>{if(e){U.value=!0,G.value=null,W.value=[];try{W.value=await k(`/api/projects/${E.value}/scenario-suggestions`,{method:`POST`,body:{scenarioId:D.value}})}catch(e){G.value=j(e,`Não foi possível gerar sugestões agora. Tente novamente.`)}finally{U.value=!1}}});function je(e){return e.replace(/^tests\//,``).replace(/\.(spec|setup)\.ts$/,``)}async function Me(e){if(je(e.spec)!==D.value){await w(`/projects/${E.value}/scenarios/${je(e.spec)}`);return}await I()}let{steps:Ne,running:Pe,passed:Ie,videoUrl:Re,testedAt:ze,output:Ve,failedStep:nt,start:rt}=ge(()=>E.value),K=u(!1),it=u(null);function at(e){Ne.value=e.steps.map(e=>({title:e.title,status:e.status,error:e.error})),Re.value=e.video_path?fe(e.video_path):null,ze.value=ye(new Date(e.started_at)),it.value=e.playwright,Ie.value=e.passed,J.value=null,Y.value=null,Pe.value=!1,K.value=!0}let q=u(!1),ot=u(!1),J=u(null),Y=u(null),st=u(!1);async function ct(){let e=nt.value;if(e){K.value=!1,q.value=!0,ot.value=!0,J.value=null,Y.value=null;try{J.value=await k(`/api/projects/${E.value}/scenario-fix`,{method:`POST`,body:{scenarioId:D.value,step:e.title,error:e.error??``}})}catch(e){Y.value=j(e,`Não foi possível gerar uma correção agora. Tente novamente.`)}finally{ot.value=!1}}}async function lt(){if(J.value){st.value=!0;try{await k(`/api/projects/${E.value}/scenarios/${D.value}`,{method:`PATCH`,body:{...pe(F.value),playwright:J.value.playwright}}),J.value=null,q.value=!1,await I()}catch(e){Y.value=j(e,`Não foi possível salvar a correção.`)}finally{st.value=!1}}}function ut(){q.value=!1,J.value=null,Y.value=null}function dt(){K.value=!0,it.value=null,J.value=null,Y.value=null,rt({spec:F.value.spec},async()=>{await I(),Z.value&&await le()})}let X=u(`eventos`),ft=s(()=>[{label:`Eventos`,value:`eventos`},...F.value.gherkin?[{label:`Cenário`,value:`gherkin`}]:[],{label:`Script`,value:`playwright`},{label:`Execuções`,value:`execucoes`}]);v(()=>F.value.gherkin,e=>{!e&&X.value===`gherkin`&&(X.value=`eventos`)});let Z=s(()=>F.value.is_auth),Q=s(()=>!Z.value||F.value.playwright.trim().length>0),{state:$,startRecording:pt,stopRecording:mt}=re(),ht=u(!1),gt=u(!1),_t=u([]),vt=u(!1);async function yt(){vt.value=!0;try{await k(`/api/projects/${E.value}/auth/skip`,{method:`POST`}),await le()}finally{vt.value=!1}}let bt=u(!1);function xt(){_t.value=[],bt.value=!0,pt(`auth`,{url:N.value.base_url??void 0})}let St=s(()=>F.value.tags.includes(`@publico`));function Ct(e){bt.value=!0,pt(Z.value?`auth`:`scenario`,{url:N.value.base_url??void 0,storageState:Z.value?void 0:He(N.value,St.value),replay:e})}function wt(e){Ct(F.value.events.slice(0,e))}function Tt(){return Z.value?xt():Ct([])}let Et=s(()=>$.value.replayFailedStep?`Aguardando você na janela`:$.value.replaying?`Refazendo os passos`:`Parar gravação`);function Dt(){V.value=!0}v(()=>$.value.videoSessionId,e=>{!e||!bt.value||(bt.value=!1,gt.value=!0)});async function Ot(e){if(!e)return;if(!Z.value)return Me(e);let t=e;if(_t.value=t.warnings??[],await I(),t.credentialsNeeded){ht.value=!0;return}dt()}return(r,s)=>{let u=ae,m=M,g=we,_=A,v=te,x=Ce,S=P,C=de,w=ee,T=se,D=me,O=he,k=ve,j=ke,ne=xe,re=Ae,ce=_e,le=Fe,fe=be,pe=Le,ge=Be,ye=ue;return e(),l(ye,{"data-hydrated":p(oe),class:`py-6 lg:py-10`},{default:y(()=>[c(`div`,Ue,[c(`div`,We,[c(`div`,Ge,[f(u,{icon:`i-ic-round-arrow-back`,label:`Voltar`,variant:`ghost`,color:`neutral`,to:`/projects/${p(E)}`,"data-testid":`cenario-voltar`},null,8,[`to`]),f(m,{icon:p(Te).icon,label:p(Te).label,"data-testid":`cenario-origem`},null,8,[`icon`,`label`]),p(Z)?(e(),l(g,{key:0,status:p(N).auth_status},null,8,[`status`])):n(``,!0),p(F).skipped?(e(),l(m,{key:1,color:`warning`,variant:`soft`,icon:`i-ic-round-pause-circle`,label:`Pulado`,"data-testid":`cenario-pulado`})):n(``,!0)]),c(`h1`,Ke,h(p(F).title),1),c(`p`,qe,h(p(F).spec),1)]),c(`div`,Je,[p(Z)?n(``,!0):(e(),l(u,{key:0,icon:`i-ic-round-delete`,label:`Excluir`,color:`error`,variant:`soft`,"data-testid":`cenario-excluir`,onClick:s[0]||=e=>L.value=!0})),p(Q)?(e(),l(u,{key:1,icon:`i-ic-round-edit`,label:`Editar`,color:`neutral`,variant:`soft`,"data-testid":`cenario-editar`,onClick:Dt})):n(``,!0),!p(Z)&&p(Q)?(e(),l(u,{key:2,icon:p(F).skipped?`i-ic-round-play-circle`:`i-ic-round-pause-circle`,label:p(F).skipped?`Voltar a rodar`:`Pular`,color:p(F).skipped?`warning`:`neutral`,variant:`soft`,loading:p(z),"data-testid":`cenario-pular`,onClick:De},null,8,[`icon`,`label`,`color`,`loading`])):n(``,!0),p(Z)?n(``,!0):(e(),l(v,{key:3,text:p(ie),disabled:p(B),"delay-duration":0,arrow:``},{default:y(()=>[c(`span`,null,[f(_,{label:`Ver sugestões`,"trailing-icon":`i-ic-round-auto-awesome`,color:`neutral`,variant:`soft`,disabled:!p(B),class:b(p(B)?``:`pointer-events-none`),"data-testid":`cenario-sugestoes`,onClick:s[1]||=e=>H.value=!0},null,8,[`disabled`,`class`])])]),_:1},8,[`text`,`disabled`])),p($).recording?(e(),l(_,{key:4,label:p(Et),"trailing-icon":`i-ic-round-stop`,color:`error`,disabled:p($).replaying,class:b(p($).replayFailedStep?``:`animate-pulse`),"data-testid":`cenario-parar`,onClick:p(mt)},null,8,[`label`,`disabled`,`class`,`onClick`])):p(Z)&&p(Q)?(e(),l(_,{key:5,label:`Gravar novamente`,"trailing-icon":`i-ic-round-fiber-manual-record`,color:`neutral`,variant:`soft`,disabled:!p($).connected,"data-testid":`auth-gravar`,onClick:xt},null,8,[`disabled`])):n(``,!0),p(Q)?(e(),l(v,{key:6,text:`Cenário pulado: o Playwright não roda ele.`,disabled:!p(F).skipped,"delay-duration":0,arrow:``},{default:y(()=>[f(_,{label:`Testar`,"trailing-icon":`i-ic-round-play-arrow`,loading:p(Pe),disabled:p(F).skipped,"data-testid":`cenario-testar`,onClick:dt},null,8,[`loading`,`disabled`])]),_:1},8,[`disabled`])):n(``,!0)])]),p(F).tags.length?(e(),a(`div`,Ye,[(e(!0),a(d,null,o(p(F).tags,t=>(e(),l(m,{key:t,color:p(Se)(t),label:t},null,8,[`color`,`label`]))),128))])):n(``,!0),p(Q)?(e(),a(`p`,Xe,` Última modificação: `+h(p(Oe)),1)):n(``,!0),f(x,{warnings:p(_t),slug:p(E),class:`mt-6`},null,8,[`warnings`,`slug`]),p($).error?(e(),a(`div`,Ze,[f(S,{color:`error`,variant:`soft`,"data-testid":`webdriver-erro`,description:p($).error},null,8,[`description`]),p($).error?.includes(`Chrome`)?(e(),l(C,{key:0})):n(``,!0)])):n(``,!0),p(Q)?n(``,!0):(e(),a(`div`,Qe,[c(`div`,$e,[f(w,{name:`i-ic-round-lock`,class:`size-7 text-dimmed`})]),s[10]||=c(`p`,{class:`font-semibold`},` Autenticação ainda não gravada `,-1),s[11]||=c(`p`,{class:`max-w-md text-sm text-muted`},` Vamos gravar o login de verdade: clique em "Gravar login" e entre normalmente na aba que abrir. A IA transforma essa gravação num teste de autenticação, sem adivinhar seletor e sem você digitar sua senha em formulário nenhum. `,-1),s[12]||=c(`p`,{class:`max-w-md text-xs text-dimmed`},[i(` A senha digitada na gravação fica salva localmente no `),c(`code`,null,`.env`),i(` do projeto, nunca no script gerado nem versionada. Assim que o teste estiver escrito, ele é executado para confirmar que o login funciona. `)],-1),f(_,{label:`Gravar login`,"trailing-icon":`i-ic-round-fiber-manual-record`,class:`mt-2`,disabled:!p($).connected,"data-testid":`auth-gravar-vazio`,onClick:xt},null,8,[`disabled`]),p(N).auth_status===`unset`?(e(),l(_,{key:0,label:`Não precisa de login`,color:`neutral`,variant:`link`,loading:p(vt),"data-testid":`auth-dispensar`,onClick:yt},null,8,[`loading`])):n(``,!0)])),p(Q)?(e(),l(T,{key:4,modelValue:p(X),"onUpdate:modelValue":s[2]||=e=>t(X)?X.value=e:null,items:p(ft),content:!1,class:`w-full mt-8`},{default:y(({item:e})=>[c(`span`,{"data-testid":`cenario-tab-${e.value}`},h(e.label),9,et)]),_:1},8,[`modelValue`,`items`])):n(``,!0),p(Q)?(e(),a(`div`,tt,[p(X)===`eventos`?(e(),a(d,{key:0},[p(F).events.length===0?(e(),l(D,{key:0,icon:`i-ic-round-timeline`,title:`Nenhum evento gravado`,description:`Este cenário foi escrito direto em código, sem passar por uma gravação de navegador.`,testid:`cenario-eventos-vazio`})):(e(),l(O,{key:1,events:p(F).events,resumable:p($).connected&&!p($).recording,"data-testid":`cenario-eventos`,onResume:wt},null,8,[`events`,`resumable`])),p($).error?(e(),l(S,{key:2,color:`error`,variant:`soft`,description:p($).error,class:`mt-4`,"data-testid":`cenario-retomar-erro`},null,8,[`description`])):n(``,!0)],64)):p(X)===`gherkin`?(e(),l(k,{key:1,"model-value":p(F).gherkin,language:`gherkin`,readonly:``,testid:`cenario-gherkin`},null,8,[`model-value`])):p(X)===`playwright`?(e(),a(d,{key:2},[p(F).playwright.trim()?(e(),l(k,{key:1,"model-value":p(F).playwright,language:`typescript`,readonly:``,testid:`cenario-playwright`},null,8,[`model-value`])):(e(),l(D,{key:0,icon:`i-ic-round-code-off`,title:`Sem código Playwright`,description:`O arquivo .spec.ts deste cenário está vazio. Edite o cenário pra escrever o teste.`,testid:`cenario-playwright-vazio`}))],64)):(e(),l(j,{key:3,runs:p(F).runs,onOpen:at},null,8,[`runs`]))])):n(``,!0),f(ne,{open:p(L),"onUpdate:open":s[3]||=e=>t(L)?L.value=e:null,title:`Excluir cenário`,"confirm-label":`Excluir`,"confirm-color":`error`,"confirm-testid":`cenario-excluir-confirmar`,loading:p(R),onConfirm:Ee},{description:y(()=>[s[13]||=i(` Isso `,-1),s[14]||=c(`b`,null,`apaga`,-1),i(` os arquivos de teste, feature e eventos de "`+h(p(F).title)+`". `,1)]),_:1},8,[`open`,`loading`]),f(re,{open:p(V),"onUpdate:open":s[4]||=e=>t(V)?V.value=e:null,slug:p(E),scenario:p(F),onUpdated:Me},null,8,[`open`,`slug`,`scenario`]),f(ce,{open:p(gt),"onUpdate:open":s[5]||=e=>t(gt)?gt.value=e:null,slug:p(E),scenario:p(F),"is-public":p(St),onGenerated:Ot,onRerecord:Tt,onResume:Ct},null,8,[`open`,`slug`,`scenario`,`is-public`]),f(le,{open:p(H),"onUpdate:open":s[6]||=e=>t(H)?H.value=e:null,loading:p(U),suggestions:p(W),error:p(G)},null,8,[`open`,`loading`,`suggestions`,`error`]),f(fe,{open:p(K),"onUpdate:open":s[7]||=e=>t(K)?K.value=e:null,running:p(Pe),passed:p(Ie),steps:p(Ne),"video-url":p(Re),"project-name":p(N).name,kind:p(Z)?`autenticacao`:`cenario`,"scenario-name":p(Z)?p(F).spec:p(F).title,branch:p(N).branch,"tested-at":p(ze),playwright:p(it),output:p(Ve),onFix:ct},null,8,[`open`,`running`,`passed`,`steps`,`video-url`,`project-name`,`kind`,`scenario-name`,`branch`,`tested-at`,`playwright`,`output`]),f(pe,{open:p(ht),"onUpdate:open":s[8]||=e=>t(ht)?ht.value=e:null,slug:p(E),onSaved:dt},null,8,[`open`,`slug`]),f(ge,{open:p(q),"onUpdate:open":s[9]||=e=>t(q)?q.value=e:null,loading:p(ot),fix:p(J),error:p(Y),applying:p(st),onApply:lt,onDiscard:ut},null,8,[`open`,`loading`,`fix`,`error`,`applying`])]),_:1},8,[`data-hydrated`])}}});export{nt as default};
@@ -1 +0,0 @@
1
- import{$t as e,At as t,B as n,Bn as r,Bt as i,En as a,F as o,G as s,H as c,I as l,It as u,Lt as d,M as f,Mt as p,N as m,P as h,Pn as g,S as _,U as v,Vn as y,Wn as b,Xt as x,Zt as S,_r as C,_t as w,cn as T,gt as E,hr as D,ht as O,in as k,ln as A,pr as j,tt as M,wt as N}from"./DMHcp4U1.js";import{Kt as P,Y as ee,at as F,qt as I,rt as te,tt as ne}from"./cRY3ZoRz.js";import{$ as re,B as L,G as ie,K as R,U as z,a as B,ct as V,i as H,n as U,rt as W,s as ae,t as oe}from"./DKtXkDi_.js";import{A as se,C as G,E as K,J as ce,M as q,N as J,O as Y,S as le,T as ue,Y as X,a as de,at as fe,ct as Z,i as pe,l as Q,o as me,r as he,s as ge,u as _e,x as ve}from"./CFDrxEXS.js";import{a as ye,c as be,i as xe,o as Se,s as Ce,t as $}from"./YTBYxWmy.js";import"./DJxuKf9Z.js";import{r as we,u as Te}from"./BkcULE08.js";import{a as Ee,l as De,o as Oe,t as ke}from"./DjT2EspM.js";import{i as Ae,n as je,t as Me}from"./B1M4anPy.js";import{t as Ne}from"./Bs931Wcm.js";import{t as Pe}from"./DnipZKP_.js";import{t as Fe}from"./B6XOqJ2u.js";import{_ as Ie,c as Le,g as Re,i as ze,l as Be,o as Ve,p as He,r as Ue,s as We,t as Ge,u as Ke}from"./2wdMJ9Eu.js";var[qe,Je]=fe(`CollapsibleRoot`),Ye=s({__name:`CollapsibleRoot`,props:{defaultOpen:{type:Boolean,required:!1,default:!1},open:{type:Boolean,required:!1,default:void 0},disabled:{type:Boolean,required:!1},unmountOnHide:{type:Boolean,required:!1,default:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`update:open`],setup(e,{expose:n,emit:r}){let i=e,a=V(i,`open`,r,{defaultValue:i.defaultOpen,passive:i.open===void 0}),{disabled:o,unmountOnHide:s}=y(i);return Je({contentId:``,disabled:o,open:a,unmountOnHide:s,onOpenToggle:()=>{o.value||(a.value=!a.value)}}),n({open:a}),R(),(e,n)=>(t(),h(b(J),{as:e.as,"as-child":i.asChild,"data-state":b(a)?`open`:`closed`,"data-disabled":b(o)?``:void 0},{default:A(()=>[d(e.$slots,`default`,{open:b(a)})]),_:3},8,[`as`,`as-child`,`data-state`,`data-disabled`]))}}),Xe=s({inheritAttrs:!1,__name:`CollapsibleContent`,props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`contentFound`],setup(e,{emit:n}){let r=e,i=n,a=qe();a.contentId||=z(void 0,`reka-collapsible-content`);let s=g(),{forwardRef:c,currentElement:l}=R(),u=g(0),p=g(0),m=f(()=>a.open.value),_=g(m.value),y=g();k(()=>[m.value,s.value?.present],async()=>{await w();let e=l.value;if(!e)return;y.value=y.value||{transitionDuration:e.style.transitionDuration,animationName:e.style.animationName},e.style.transitionDuration=`0s`,e.style.animationName=`none`;let t=e.getBoundingClientRect();p.value=t.height,u.value=t.width,_.value||(e.style.transitionDuration=y.value.transitionDuration,e.style.animationName=y.value.animationName)},{immediate:!0});let x=f(()=>_.value&&a.open.value);return N(()=>{requestAnimationFrame(()=>{_.value=!1})}),W(l,`beforematch`,e=>{requestAnimationFrame(()=>{a.onOpenToggle(),i(`contentFound`)})}),(e,n)=>(t(),h(b(L),{ref_key:`presentRef`,ref:s,present:e.forceMount||b(a).open.value,"force-mount":!0},{default:A(({present:t})=>[v(b(J),E(e.$attrs,{id:b(a).contentId,ref:b(c),"as-child":r.asChild,as:e.as,hidden:t?void 0:b(a).unmountOnHide.value?``:`until-found`,"data-state":x.value?void 0:b(a).open.value?`open`:`closed`,"data-disabled":b(a).disabled?.value?``:void 0,style:{"--reka-collapsible-content-height":`${p.value}px`,"--reka-collapsible-content-width":`${u.value}px`}}),{default:A(()=>[!b(a).unmountOnHide.value||t?d(e.$slots,`default`,{key:0}):o(`v-if`,!0)]),_:2},1040,[`id`,`as-child`,`as`,`hidden`,`data-state`,`data-disabled`,`style`])]),_:3},8,[`present`]))}}),Ze=s({__name:`CollapsibleTrigger`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let n=e;R();let r=qe();return(e,i)=>(t(),h(b(J),{type:e.as===`button`?`button`:void 0,as:e.as,"as-child":n.asChild,"aria-controls":b(r).contentId,"aria-expanded":b(r).open.value,"data-state":b(r).open.value?`open`:`closed`,"data-disabled":b(r).disabled?.value?``:void 0,disabled:b(r).disabled?.value,onClick:b(r).onOpenToggle},{default:A(()=>[d(e.$slots,`default`)]),_:3},8,[`type`,`as`,`as-child`,`aria-controls`,`aria-expanded`,`data-state`,`data-disabled`,`disabled`,`onClick`]))}}),Qe={key:0,class:`flex items-center gap-2`},$e=Object.assign(s({__name:`inline`,props:{slug:{},name:{}},emits:[`renamed`],setup(e,{emit:n}){let r=n,i=Ne(),o=g(!1),s=g(e.name),c=g(!1);function u(){s.value=e.name,o.value=!0}function d(){o.value=!1}async function f(){let t=s.value.trim();if(t===``||t===e.name)return d();c.value=!0;try{let n=await Z(`/api/projects/${e.slug}`,{method:`PUT`,body:{name:t}});o.value=!1,r(`renamed`,n.slug)}catch(e){i.failure(e,`Não foi possível renomear o projeto.`)}finally{c.value=!1}}return(n,r)=>{let i=H,p=ke,g=Ee;return b(o)?(t(),l(`div`,Qe,[v(i,{modelValue:b(s),"onUpdate:modelValue":r[0]||=e=>a(s)?s.value=e:null,autofocus:``,class:`grow`,"data-testid":`projeto-nome-campo`,onKeydown:[P(f,[`enter`]),P(d,[`esc`])]},null,8,[`modelValue`]),v(p,{icon:`i-ic-round-check`,label:`Confirmar`,color:`success`,variant:`soft`,loading:b(c),"data-testid":`projeto-nome-confirmar`,onClick:f},null,8,[`loading`]),v(p,{icon:`i-ic-round-close`,label:`Cancelar`,color:`neutral`,variant:`soft`,disabled:b(c),"data-testid":`projeto-nome-cancelar`,onClick:d},null,8,[`disabled`])])):(t(),h(g,{key:1,text:`Clique para renomear`,"delay-duration":0,arrow:``},{default:A(()=>[m(`h1`,{class:`text-3xl font-bold truncate cursor-pointer`,"data-testid":`projeto-nome`,onClick:u},C(e.name),1)]),_:1}))}}}),{__name:`ProjectRenameInline`}),et={base:`relative`,variants:{size:{xs:``,sm:``,md:``,lg:``,xl:``},orientation:{horizontal:`inline-flex -space-x-px`,vertical:`flex flex-col -space-y-px`}}},tt={__name:`UFieldGroup`,props:{as:{type:null,required:!1},size:{type:null,required:!1},orientation:{type:null,required:!1,default:`horizontal`},class:{type:null,required:!1},ui:{type:Object,required:!1}},setup(e){let n=K(`fieldGroup`,e),r=Te(),i=f(()=>ve({extend:et,...r.ui?.fieldGroup||{}}));return p(G,f(()=>({orientation:n.orientation,size:n.size}))),(e,r)=>(t(),h(b(J),{as:b(n).as,"data-orientation":b(n).orientation,class:j(i.value({orientation:b(n).orientation,class:[b(n).ui?.base,b(n).class]}))},{default:A(()=>[d(e.$slots,`default`)]),_:3},8,[`as`,`data-orientation`,`class`]))}},nt=[`data-testid`],rt=Object.assign(s({__name:`select`,props:{slug:{}},emits:[`edit`,`activated`],async setup(e,{emit:n}){let r,i,o=n,{data:s,refresh:c}=([r,i]=T(()=>oe(`/api/projects/${e.slug}/environments`,{key:`environments-${e.slug}`},`$K6QY299bPm`)),r=await r,i(),r),l=g(!1),u=f(()=>(s.value?.environments??[]).map(e=>({label:e.name,value:e.slug}))),d=f({get:()=>s.value?.active??void 0,set:p});async function p(t){if(!(!t||t===s.value?.active)){l.value=!0;try{await Z(`/api/projects/${e.slug}/environments/${t}/activate`,{method:`POST`}),await c(),o(`activated`)}finally{l.value=!1}}}return(e,n)=>{let r=pe,i=Ee,s=xe,c=ke,f=tt;return b(u).length<2?(t(),h(i,{key:0,text:`Editar as variáveis deste ambiente`},{default:A(()=>[v(r,{icon:`i-ic-round-layers`,label:b(u)[0]?.label??`Ambientes`,color:`neutral`,variant:`soft`,"data-testid":`projeto-ambientes`,onClick:n[0]||=e=>o(`edit`)},null,8,[`label`])]),_:1})):(t(),h(f,{key:1},{default:A(()=>[v(s,{modelValue:b(d),"onUpdate:modelValue":n[1]||=e=>a(d)?d.value=e:null,items:b(u),"value-key":`value`,"search-input":!1,loading:b(l),icon:`i-ic-round-layers`,class:`w-44`,"data-testid":`projeto-ambiente-ativo`},{"item-label":A(({item:e})=>[m(`span`,{"data-testid":`projeto-ambiente-${e.value}`},C(e.label),9,nt)]),_:1},8,[`modelValue`,`items`,`loading`]),v(c,{icon:`i-ic-round-tune`,label:`Editar ambientes`,color:`neutral`,variant:`soft`,"data-testid":`projeto-ambientes`,onClick:n[2]||=e=>o(`edit`)})]),_:1}))}}}),{__name:`ProjectEnvironmentsSelect`}),it={__name:`UDropdownMenuContent`,props:{items:{type:null,required:!1},portal:{type:[Boolean,String],required:!1,skipCheck:!0},sub:{type:Boolean,required:!1},labelKey:{type:null,required:!0},descriptionKey:{type:null,required:!0},checkedIcon:{type:null,required:!1},loadingIcon:{type:null,required:!1},externalIcon:{type:[Boolean,String],required:!1,skipCheck:!0},size:{type:null,required:!1},filter:{type:[Boolean,Object],required:!1},filterFields:{type:Array,required:!1},ignoreFilter:{type:Boolean,required:!1},searchTerm:{type:String,required:!1},class:{type:null,required:!1},ui:{type:null,required:!0},uiOverride:{type:null,required:!1},loop:{type:Boolean,required:!1},memoDependencies:{type:Array,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1}},emits:[`update:searchTerm`,`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`closeAutoFocus`],setup(a,{emit:s}){let p=a,y=s,x=e(),{t:S,dir:w}=he(),T=Te(),{filterGroups:O}=ye(),k=g(``),N=f({get:()=>p.searchTerm??k.value,set:e=>{k.value=e,y(`update:searchTerm`,e)}}),P=r(()=>F(p.filter,{placeholder:S(`dropdownMenu.search`),variant:`none`})),ee=ae(r(()=>p.portal)),te=ie(ce(p,`sub`,`items`,`portal`,`labelKey`,`descriptionKey`,`checkedIcon`,`loadingIcon`,`externalIcon`,`size`,`filter`,`filterFields`,`ignoreFilter`,`searchTerm`,`class`,`ui`,`uiOverride`),y),ne=()=>q(x,[`default`]),[L,R]=re(),z=f(()=>w.value===`rtl`?T.ui.icons.chevronLeft:T.ui.icons.chevronRight),B=f(()=>p.items?.length?se(p.items)?p.items:[p.items]:[]),V=e=>!!e.type&&[`label`,`separator`].includes(e.type),U=f(()=>{if(!p.filter||p.ignoreFilter||!N.value)return B.value;let e=Array.isArray(p.filterFields)&&p.filterFields.length?p.filterFields:[p.labelKey];return O(B.value,N.value,{fields:e,isStructural:V})}),W=f(()=>U.value.some(e=>e.some(e=>!V(e))));return(e,r)=>(t(),l(_,null,[v(b(L),null,{default:A(({item:n,active:r,index:i})=>[d(e.$slots,n.slot||`item`,{item:n,index:i,ui:a.ui},()=>[d(e.$slots,n.slot?`${n.slot}-leading`:`item-leading`,{item:n,active:r,index:i,ui:a.ui},()=>[n.loading?(t(),h(Q,{key:0,name:a.loadingIcon||b(T).ui.icons.loading,"data-slot":`itemLeadingIcon`,class:j(a.ui.itemLeadingIcon({class:[a.uiOverride?.itemLeadingIcon,n.ui?.itemLeadingIcon],color:n?.color,loading:!0}))},null,8,[`name`,`class`])):n.icon?(t(),h(Q,{key:1,name:n.icon,"data-slot":`itemLeadingIcon`,class:j(a.ui.itemLeadingIcon({class:[a.uiOverride?.itemLeadingIcon,n.ui?.itemLeadingIcon],color:n?.color,active:r}))},null,8,[`name`,`class`])):n.avatar?(t(),h(ge,E({key:2,size:n.ui?.itemLeadingAvatarSize||a.uiOverride?.itemLeadingAvatarSize||a.ui.itemLeadingAvatarSize()},n.avatar,{"data-slot":`itemLeadingAvatar`,class:a.ui.itemLeadingAvatar({class:[a.uiOverride?.itemLeadingAvatar,n.ui?.itemLeadingAvatar],active:r})}),null,16,[`size`,`class`])):o(``,!0)]),b(Y)(n,p.labelKey)||x[n.slot?`${n.slot}-label`:`item-label`]||b(Y)(n,p.descriptionKey)||x[n.slot?`${n.slot}-description`:`item-description`]?(t(),l(`span`,{key:0,"data-slot":`itemWrapper`,class:j(a.ui.itemWrapper({class:[a.uiOverride?.itemWrapper,n.ui?.itemWrapper]}))},[m(`span`,{"data-slot":`itemLabel`,class:j(a.ui.itemLabel({class:[a.uiOverride?.itemLabel,n.ui?.itemLabel],active:r}))},[d(e.$slots,n.slot?`${n.slot}-label`:`item-label`,{item:n,active:r,index:i},()=>[c(C(b(Y)(n,p.labelKey)),1)]),n.target===`_blank`&&a.externalIcon!==!1?(t(),h(Q,{key:0,name:typeof a.externalIcon==`string`?a.externalIcon:b(T).ui.icons.external,"data-slot":`itemLabelExternalIcon`,class:j(a.ui.itemLabelExternalIcon({class:[a.uiOverride?.itemLabelExternalIcon,n.ui?.itemLabelExternalIcon],color:n?.color,active:r}))},null,8,[`name`,`class`])):o(``,!0)],2),b(Y)(n,p.descriptionKey)||x[n.slot?`${n.slot}-description`:`item-description`]?(t(),l(`span`,{key:0,"data-slot":`itemDescription`,class:j(a.ui.itemDescription({class:[a.uiOverride?.itemDescription,n.ui?.itemDescription]}))},[d(e.$slots,n.slot?`${n.slot}-description`:`item-description`,{item:n,active:r,index:i},()=>[c(C(b(Y)(n,p.descriptionKey)),1)])],2)):o(``,!0)],2)):o(``,!0),m(`span`,{"data-slot":`itemTrailing`,class:j(a.ui.itemTrailing({class:[a.uiOverride?.itemTrailing,n.ui?.itemTrailing]}))},[d(e.$slots,n.slot?`${n.slot}-trailing`:`item-trailing`,{item:n,active:r,index:i,ui:a.ui},()=>[n.children?.length?(t(),h(Q,{key:0,name:z.value,"data-slot":`itemTrailingIcon`,class:j(a.ui.itemTrailingIcon({class:[a.uiOverride?.itemTrailingIcon,n.ui?.itemTrailingIcon],color:n?.color,active:r}))},null,8,[`name`,`class`])):n.kbds?.length?(t(),l(`span`,{key:1,"data-slot":`itemTrailingKbds`,class:j(a.ui.itemTrailingKbds({class:[a.uiOverride?.itemTrailingKbds,n.ui?.itemTrailingKbds]}))},[(t(!0),l(_,null,u(n.kbds,(e,r)=>(t(),h(Oe,E({key:r,size:n.ui?.itemTrailingKbdsSize||a.uiOverride?.itemTrailingKbdsSize||a.ui.itemTrailingKbdsSize()},{ref_for:!0},typeof e==`string`?{value:e}:e),null,16,[`size`]))),128))],2)):o(``,!0)]),v(b($).ItemIndicator,{"as-child":``},{default:A(()=>[v(Q,{name:a.checkedIcon||b(T).ui.icons.check,"data-slot":`itemTrailingIcon`,class:j(a.ui.itemTrailingIcon({class:[a.uiOverride?.itemTrailingIcon,n.ui?.itemTrailingIcon],color:n?.color}))},null,8,[`name`,`class`])]),_:2},1024)],2)])]),_:3}),v(b($).Portal,D(M(b(ee))),{default:A(()=>[v(b(le),null,{default:A(()=>[(t(),h(i(a.sub?b($).SubContent:b($).Content),E({"data-slot":`content`,class:a.ui.content({class:[a.uiOverride?.content,p.class]})},b(te)),{default:A(()=>[a.filter?(t(),h(b($).Filter,{key:0,modelValue:N.value,"onUpdate:modelValue":r[1]||=e=>N.value=e,"as-child":``},{default:A(()=>[v(H,E({autofocus:``,autocomplete:`off`,size:a.size},P.value,{"data-slot":`input`,class:a.ui.input({class:a.uiOverride?.input}),onChange:r[0]||=I(()=>{},[`stop`])}),null,16,[`size`,`class`])]),_:1},8,[`modelValue`])):o(``,!0),d(e.$slots,`content-top`,{sub:a.sub??!1}),!N.value||W.value?(t(),l(`div`,{key:1,role:`presentation`,"data-slot":`viewport`,class:j(a.ui.viewport({class:a.uiOverride?.viewport}))},[(t(!0),l(_,null,u(U.value,(r,i)=>(t(),h(b($).Group,{key:`group-${i}`,"data-slot":`group`,class:j(a.ui.group({class:a.uiOverride?.group}))},{default:A(()=>[(t(!0),l(_,null,u(r,(r,o)=>(t(),l(_,{key:`group-${i}-${o}`},[r.type===`label`?(t(),h(b($).Label,{key:0,"data-slot":`label`,class:j(a.ui.label({class:[a.uiOverride?.label,r.ui?.label,r.class]}))},{default:A(()=>[v(b(R),{item:r,index:o},null,8,[`item`,`index`])]),_:2},1032,[`class`])):r.type===`separator`?(t(),h(b($).Separator,{key:1,"data-slot":`separator`,class:j(a.ui.separator({class:[a.uiOverride?.separator,r.ui?.separator,r.class]}))},null,8,[`class`])):r?.children?.length?(t(),h(b($).Sub,{key:2,open:r.open,"default-open":r.defaultOpen},{default:A(()=>[v(b($).SubTrigger,{as:`button`,type:`button`,disabled:r.disabled,"text-value":b(Y)(r,p.labelKey),"data-slot":`item`,class:j(a.ui.item({class:[a.uiOverride?.item,r.ui?.item,r.class],color:r?.color}))},{default:A(()=>[v(b(R),{item:r,index:o},null,8,[`item`,`index`])]),_:2},1032,[`disabled`,`text-value`,`class`]),v(it,E({sub:``,class:r.ui?.content,ui:a.ui,"ui-override":a.uiOverride,portal:a.portal,items:r.children,align:`start`,"align-offset":-4,"side-offset":3,"label-key":a.labelKey,"description-key":a.descriptionKey,"checked-icon":a.checkedIcon,"loading-icon":a.loadingIcon,"external-icon":a.externalIcon,size:a.size,filter:r.filter,"filter-fields":r.filterFields||a.filterFields,"ignore-filter":r.ignoreFilter??a.ignoreFilter},{ref_for:!0},r.content),n({_:2},[u(ne(),(t,n)=>({name:n,fn:A(t=>[d(e.$slots,n,E({ref_for:!0},t))])}))]),1040,[`class`,`ui`,`ui-override`,`portal`,`items`,`label-key`,`description-key`,`checked-icon`,`loading-icon`,`external-icon`,`size`,`filter`,`filter-fields`,`ignore-filter`])]),_:2},1032,[`open`,`default-open`])):r.type===`checkbox`?(t(),h(b($).CheckboxItem,{key:3,"model-value":r.checked,disabled:r.disabled,"text-value":b(Y)(r,p.labelKey),"data-slot":`item`,class:j(a.ui.item({class:[a.uiOverride?.item,r.ui?.item,r.class],color:r?.color})),"onUpdate:modelValue":r.onUpdateChecked,onSelect:r.onSelect},{default:A(()=>[v(b(R),{item:r,index:o},null,8,[`item`,`index`])]),_:2},1032,[`model-value`,`disabled`,`text-value`,`class`,`onUpdate:modelValue`,`onSelect`])):(t(),h(de,E({key:4,ref_for:!0},b(_e)(r),{custom:``}),{default:A(({active:e,...t})=>[v(b($).Item,{"as-child":``,disabled:r.disabled,"text-value":b(Y)(r,p.labelKey),onSelect:r.onSelect},{default:A(()=>[v(me,E({ref_for:!0},t,{"data-slot":`item`,class:a.ui.item({class:[a.uiOverride?.item,r.ui?.item,r.class],color:r?.color,active:e})}),{default:A(()=>[v(b(R),{item:r,active:e,index:o},null,8,[`item`,`active`,`index`])]),_:2},1040,[`class`])]),_:2},1032,[`disabled`,`text-value`,`onSelect`])]),_:2},1040))],64))),128))]),_:2},1032,[`class`]))),128))],2)):o(``,!0),N.value&&!W.value?(t(),l(`div`,{key:2,"data-slot":`empty`,class:j(a.ui.empty({class:a.uiOverride?.empty}))},[d(e.$slots,`empty`,{searchTerm:N.value},()=>[c(C(b(S)(`dropdownMenu.noMatch`,{searchTerm:N.value})),1)])],2)):o(``,!0),d(e.$slots,`default`),d(e.$slots,`content-bottom`,{sub:a.sub??!1})]),_:3},16,[`class`]))]),_:3})]),_:3},16)],64))}},at={slots:{content:`min-w-32 max-h-(--reka-dropdown-menu-content-available-height) bg-default shadow-lg rounded-md ring ring-default overflow-hidden data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-dropdown-menu-content-transform-origin) flex flex-col`,input:`border-b border-default`,empty:`text-center text-muted`,viewport:`relative divide-y divide-default scroll-py-1 overflow-y-auto flex-1`,arrow:`fill-bg stroke-default`,group:`p-1 isolate`,label:`w-full flex items-center font-semibold text-highlighted`,separator:`-mx-1 my-1 h-px bg-border`,item:`group relative w-full flex items-start select-none outline-none before:absolute before:z-[-1] before:inset-px before:rounded-md data-disabled:cursor-not-allowed data-disabled:opacity-75`,itemLeadingIcon:`shrink-0`,itemLeadingAvatar:`shrink-0`,itemLeadingAvatarSize:``,itemTrailing:`ms-auto inline-flex gap-1.5 items-center`,itemTrailingIcon:`shrink-0`,itemTrailingKbds:`hidden lg:inline-flex items-center shrink-0`,itemTrailingKbdsSize:``,itemWrapper:`flex-1 flex flex-col text-start min-w-0`,itemLabel:`truncate`,itemDescription:`truncate text-muted`,itemLabelExternalIcon:`inline-block size-3 align-top text-dimmed`},variants:{color:{primary:``,secondary:``,success:``,info:``,warning:``,error:``,neutral:``},active:{true:{item:`text-highlighted before:bg-elevated`,itemLeadingIcon:`text-default`},false:{item:[`text-default data-highlighted:text-highlighted data-[state=open]:text-highlighted data-highlighted:before:bg-elevated/50 data-[state=open]:before:bg-elevated/50`,`transition-colors before:transition-colors`],itemLeadingIcon:[`text-dimmed group-data-highlighted:text-default group-data-[state=open]:text-default`,`transition-colors`]}},loading:{true:{itemLeadingIcon:`animate-spin`}},size:{xs:{label:`p-1 text-xs gap-1`,item:`p-1 text-xs gap-1`,empty:`p-2 text-xs`,itemLeadingIcon:`size-4`,itemLeadingAvatarSize:`3xs`,itemTrailingIcon:`size-4`,itemTrailingKbds:`gap-0.5`,itemTrailingKbdsSize:`sm`},sm:{label:`p-1.5 text-xs gap-1.5`,item:`p-1.5 text-xs gap-1.5`,empty:`p-2.5 text-xs`,itemLeadingIcon:`size-4`,itemLeadingAvatarSize:`3xs`,itemTrailingIcon:`size-4`,itemTrailingKbds:`gap-0.5`,itemTrailingKbdsSize:`sm`},md:{label:`p-1.5 text-sm gap-1.5`,item:`p-1.5 text-sm gap-1.5`,empty:`p-2.5 text-sm`,itemLeadingIcon:`size-5`,itemLeadingAvatarSize:`2xs`,itemTrailingIcon:`size-5`,itemTrailingKbds:`gap-0.5`,itemTrailingKbdsSize:`md`},lg:{label:`p-2 text-sm gap-2`,item:`p-2 text-sm gap-2`,empty:`p-3 text-sm`,itemLeadingIcon:`size-5`,itemLeadingAvatarSize:`2xs`,itemTrailingIcon:`size-5`,itemTrailingKbds:`gap-1`,itemTrailingKbdsSize:`md`},xl:{label:`p-2 text-base gap-2`,item:`p-2 text-base gap-2`,empty:`p-3 text-base`,itemLeadingIcon:`size-6`,itemLeadingAvatarSize:`xs`,itemTrailingIcon:`size-6`,itemTrailingKbds:`gap-1`,itemTrailingKbdsSize:`lg`}}},compoundVariants:[{color:`primary`,active:!1,class:{item:`text-primary data-highlighted:text-primary data-highlighted:before:bg-primary/10 data-[state=open]:before:bg-primary/10`,itemLeadingIcon:`text-primary/75 group-data-highlighted:text-primary group-data-[state=open]:text-primary`}},{color:`secondary`,active:!1,class:{item:`text-secondary data-highlighted:text-secondary data-highlighted:before:bg-secondary/10 data-[state=open]:before:bg-secondary/10`,itemLeadingIcon:`text-secondary/75 group-data-highlighted:text-secondary group-data-[state=open]:text-secondary`}},{color:`success`,active:!1,class:{item:`text-success data-highlighted:text-success data-highlighted:before:bg-success/10 data-[state=open]:before:bg-success/10`,itemLeadingIcon:`text-success/75 group-data-highlighted:text-success group-data-[state=open]:text-success`}},{color:`info`,active:!1,class:{item:`text-info data-highlighted:text-info data-highlighted:before:bg-info/10 data-[state=open]:before:bg-info/10`,itemLeadingIcon:`text-info/75 group-data-highlighted:text-info group-data-[state=open]:text-info`}},{color:`warning`,active:!1,class:{item:`text-warning data-highlighted:text-warning data-highlighted:before:bg-warning/10 data-[state=open]:before:bg-warning/10`,itemLeadingIcon:`text-warning/75 group-data-highlighted:text-warning group-data-[state=open]:text-warning`}},{color:`error`,active:!1,class:{item:`text-error data-highlighted:text-error data-highlighted:before:bg-error/10 data-[state=open]:before:bg-error/10`,itemLeadingIcon:`text-error/75 group-data-highlighted:text-error group-data-[state=open]:text-error`}},{color:`primary`,active:!0,class:{item:`text-primary before:bg-primary/10`,itemLeadingIcon:`text-primary`}},{color:`secondary`,active:!0,class:{item:`text-secondary before:bg-secondary/10`,itemLeadingIcon:`text-secondary`}},{color:`success`,active:!0,class:{item:`text-success before:bg-success/10`,itemLeadingIcon:`text-success`}},{color:`info`,active:!0,class:{item:`text-info before:bg-info/10`,itemLeadingIcon:`text-info`}},{color:`warning`,active:!0,class:{item:`text-warning before:bg-warning/10`,itemLeadingIcon:`text-warning`}},{color:`error`,active:!0,class:{item:`text-error before:bg-error/10`,itemLeadingIcon:`text-error`}}],defaultVariants:{size:`md`}},ot={__name:`UDropdownMenu`,props:O({size:{type:null,required:!1},items:{type:null,required:!1},checkedIcon:{type:null,required:!1},loadingIcon:{type:null,required:!1},externalIcon:{type:[Boolean,String],required:!1,skipCheck:!0,default:!0},content:{type:Object,required:!1},arrow:{type:[Boolean,Object],required:!1},portal:{type:[Boolean,String],required:!1,skipCheck:!0,default:!0},labelKey:{type:null,required:!1,default:`label`},descriptionKey:{type:null,required:!1,default:`description`},filter:{type:[Boolean,Object],required:!1,default:!1},filterFields:{type:Array,required:!1},ignoreFilter:{type:Boolean,required:!1,default:!1},disabled:{type:Boolean,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1},defaultOpen:{type:Boolean,required:!1},open:{type:Boolean,required:!1},modal:{type:Boolean,required:!1,default:!0}},{searchTerm:{type:String,default:``},searchTermModifiers:{}}),emits:O([`update:open`],[`update:searchTerm`]),setup(i,{emit:a}){let s=i,c=a,l=e(),p=S(i,`searchTerm`,{type:String,default:``}),m=K(`dropdownMenu`,s),g=Te(),_=ue(X(m,`defaultOpen`,`open`,`modal`),c),y=r(()=>F(m.content,{side:`bottom`,sideOffset:8,collisionPadding:8})),x=r(()=>F(m.arrow,{rounded:!0})),C=()=>q(l,[`default`]),w=f(()=>ve({extend:at,...g.ui?.dropdownMenu||{}})({size:m.size}));return(e,r)=>(t(),h(b(Ce),D(M(b(_))),{default:A(({open:i})=>[l.default?(t(),h(b(Se),{key:0,"as-child":``,class:j(b(m).class),disabled:b(m).disabled},{default:A(()=>[d(e.$slots,`default`,{open:i})]),_:2},1032,[`class`,`disabled`])):o(``,!0),v(it,E({"search-term":p.value,"onUpdate:searchTerm":r[0]||=e=>p.value=e,class:w.value.content({class:[!l.default&&b(m).class,b(m).ui?.content]}),ui:w.value,"ui-override":b(m).ui},y.value,{items:b(m).items,portal:b(m).portal,"label-key":b(m).labelKey,"description-key":b(m).descriptionKey,"checked-icon":b(m).checkedIcon,"loading-icon":b(m).loadingIcon,"external-icon":b(m).externalIcon,size:b(m).size,filter:b(m).filter,"filter-fields":b(m).filterFields,"ignore-filter":b(m).ignoreFilter}),n({default:A(()=>[b(m).arrow?(t(),h(b(be),E({key:0},x.value,{"data-slot":`arrow`,class:w.value.arrow({class:b(m).ui?.arrow})}),null,16,[`class`])):o(``,!0)]),_:2},[u(C(),(t,n)=>({name:n,fn:A(t=>[d(e.$slots,n,D(M(t)))])}))]),1040,[`search-term`,`class`,`ui`,`ui-override`,`items`,`portal`,`label-key`,`description-key`,`checked-icon`,`loading-icon`,`external-icon`,`size`,`filter`,`filter-fields`,`ignore-filter`])]),_:3},16))}},st={"data-testid":`cenario-vazio`,class:`py-10 text-center`},ct={class:`flex flex-col items-center gap-2`},lt={class:`flex size-15 items-center justify-center rounded-lg bg-primary/10`},ut=Object.assign(s({__name:`empty`,props:{disabled:{type:Boolean,default:!1}},emits:[`record`],setup(e,{emit:n}){let r=n;return(n,i)=>{let a=Q,o=je;return t(),l(`div`,st,[i[3]||=m(`p`,{class:`text-xl font-semibold`},` Nenhum cenário ainda `,-1),i[4]||=m(`p`,{class:`text-muted mb-6`},` Grave uma interação para gerar o primeiro teste. `,-1),v(o,{"data-testid":`cenario-vazio-gravar`,class:j([`max-w-sm mx-auto transition-colors`,e.disabled?`opacity-50`:`cursor-pointer hover:bg-accented/75`]),onClick:i[0]||=t=>!e.disabled&&r(`record`)},{default:A(()=>[m(`div`,ct,[m(`div`,lt,[v(a,{name:`i-ic-round-fiber-manual-record`,class:`size-10 text-primary`})]),i[1]||=m(`p`,{class:`text-lg font-semibold`},` Gravar cenário `,-1),i[2]||=m(`p`,{class:`text-sm text-muted`},` Abre o navegador e grava sua interação pra virar um teste automático. `,-1)])]),_:1},8,[`class`])])}}}),{__name:`ScenarioEmpty`}),dt={class:`flex flex-col gap-2`},ft=[`id`],pt=[`value`],mt={key:0,class:`text-sm text-muted italic`},ht=Object.assign(s({__name:`vars`,props:O({knownKeys:{default:()=>[]},testid:{default:`variaveis`}},{modelValue:{default:()=>[]},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let r=S(e,`modelValue`),i=x();function a(){r.value=[...r.value,{key:``,value:``,secret:!1,pending:!1}]}function s(e){r.value=r.value.filter((t,n)=>n!==e)}let c=g([]);function d(e){c.value=c.value.includes(e)?c.value.filter(t=>t!==e):[...c.value,e]}function f(e,t){return e.secret&&!c.value.includes(t)?`password`:`text`}return(p,h)=>{let g=H,y=pe,x=Ee;return t(),l(`div`,dt,[m(`datalist`,{id:b(i)},[(t(!0),l(_,null,u(e.knownKeys,e=>(t(),l(`option`,{key:e,value:e},null,8,pt))),128))],8,ft),(t(!0),l(_,null,u(r.value,(r,a)=>(t(),l(`div`,{key:a,class:`flex items-center gap-2`},[v(g,{modelValue:r.key,"onUpdate:modelValue":e=>r.key=e,class:`w-1/3`,placeholder:`CHAVE`,list:b(i),"data-testid":`${e.testid}-chave-${a}`},null,8,[`modelValue`,`onUpdate:modelValue`,`list`,`data-testid`]),v(g,{modelValue:r.value,"onUpdate:modelValue":e=>r.value=e,class:`flex-1`,type:f(r,a),placeholder:`valor`,color:r.pending?`warning`:void 0,"data-testid":`${e.testid}-valor-${a}`},n({_:2},[r.secret?{name:`trailing`,fn:A(()=>[v(y,{icon:b(c).includes(a)?`i-ic-round-visibility-off`:`i-ic-round-visibility`,color:`neutral`,variant:`link`,"aria-label":b(c).includes(a)?`Esconder o valor`:`Revelar o valor`,"data-testid":`${e.testid}-revelar-${a}`,onClick:e=>d(a)},null,8,[`icon`,`aria-label`,`data-testid`,`onClick`])]),key:`0`}:void 0]),1032,[`modelValue`,`onUpdate:modelValue`,`type`,`color`,`data-testid`]),v(x,{text:`Segredo: o valor fica mascarado na tela`},{default:A(()=>[v(y,{icon:`i-ic-round-lock`,color:r.secret?`primary`:`neutral`,variant:r.secret?`solid`:`ghost`,"aria-label":r.secret?`Deixar de ser segredo`:`Marcar como segredo`,"data-testid":`${e.testid}-segredo-${a}`,onClick:e=>r.secret=!r.secret},null,8,[`color`,`variant`,`aria-label`,`data-testid`,`onClick`])]),_:2},1024),v(y,{icon:`i-ic-round-close`,color:`error`,variant:`ghost`,"aria-label":`Remover variável`,"data-testid":`${e.testid}-remover-${a}`,onClick:e=>s(a)},null,8,[`data-testid`,`onClick`])]))),128)),r.value.length?o(``,!0):(t(),l(`p`,mt,` Nenhuma variável ainda. `)),v(y,{icon:`i-ic-round-add`,label:`Adicionar variável`,color:`neutral`,variant:`soft`,class:`self-start`,"data-testid":`${e.testid}-adicionar`,onClick:a},null,8,[`data-testid`])])}}}),{__name:`ProjectEnvironmentsVars`}),gt={class:`flex flex-col gap-4 sm:flex-row`},_t={class:`flex flex-col gap-3 sm:w-56 shrink-0`},vt={key:0,class:`flex-1 flex flex-col gap-4 min-w-0`},yt={class:`flex flex-wrap gap-2`},bt={key:0,class:`mr-auto self-center text-sm text-warning`,"data-testid":`ambientes-fechar-aviso`},xt=Object.assign(s({__name:`modal`,props:O({slug:{}},{open:{type:Boolean,default:!1},openModifiers:{}}),emits:O([`saved`],[`update:open`]),setup(e,{emit:n}){let r=S(e,`open`),i=n,s=g(null),c=g(null),d=g(``),p=g([]),y=g(!1),x=g(``),C=g(!1),w=g(!1),T=g(!1),E=g(!1),D=Ne(),O=f(()=>s.value?.environments??[]),j=f(()=>O.value.find(e=>e.slug===c.value)??null),M=g(``),N=f(()=>!!j.value&&ee()!==M.value);function ee(){return JSON.stringify({name:d.value,vars:p.value})}function F(e){return{key:e.key,value:e.value??``,secret:e.secret,pending:e.pending}}function I(e){c.value=e.slug,d.value=e.name,p.value=e.vars.map(F),C.value=!1,w.value=!1,M.value=ee()}function te(){j.value&&I(j.value)}function ne(e){let t=e.target;t.closest(`[data-testid="ambientes-remover"]`)||(C.value=!1),t.closest(`[data-testid="ambientes-fechar"]`)||(w.value=!1),t.closest(`[data-testid="ambientes-criar"], [data-testid="ambientes-novo-nome"]`)||(y.value=!1,x.value=``)}function re(){if(N.value&&!w.value){w.value=!0;return}r.value=!1}async function L(){T.value=!0;try{let t=await Z(`/api/projects/${e.slug}/environments`);s.value=t;let n=t.environments.find(e=>e.slug===t.active)??t.environments[0];n?I(n):c.value=null}catch(e){D.failure(e,`Não foi possível carregar os ambientes.`)}finally{T.value=!1}}k(r,e=>{e&&L()});async function ie(e,t,n){E.value=!0;try{await e(),await L(),i(`saved`),D.success(t)}catch(e){D.failure(e,n)}finally{E.value=!1}}async function R(){let t=x.value.trim();t&&(await ie(async()=>{let n=await Z(`/api/projects/${e.slug}/environments`,{method:`POST`,body:{name:t}});c.value=n.slug},`Ambiente criado`,`Não foi possível criar o ambiente.`),x.value=``,y.value=!1)}function z(){if(c.value)return ie(()=>Z(`/api/projects/${e.slug}/environments/${c.value}`,{method:`PUT`,body:{name:d.value.trim(),vars:p.value.map(e=>({key:e.key.trim(),value:e.value===``?null:e.value,secret:e.secret}))}}),`Ambiente salvo`,`Não foi possível salvar o ambiente.`)}async function V(){if(!j.value)return;if(!C.value){C.value=!0;return}let t=j.value.slug;await ie(async()=>{await Z(`/api/projects/${e.slug}/environments/${t}`,{method:`DELETE`}),c.value=null},`Ambiente removido`,`Não foi possível remover o ambiente.`),C.value=!1}return(e,n)=>{let i=pe,f=H,g=B,S=ht,D=Re,k=U;return t(),h(k,{open:r.value,"onUpdate:open":n[5]||=e=>r.value=e,wide:``,dismissable:!b(N),title:`Ambientes`,description:`Cada ambiente diz contra o que os cenários rodam. Os arquivos ficam fora do git, então cada máquina tem os seus.`},{body:A(()=>[m(`div`,{onClickCapture:ne},[m(`div`,gt,[m(`div`,_t,[(t(!0),l(_,null,u(b(O),e=>(t(),h(i,{key:e.slug,label:e.name,color:e.slug===b(c)?`primary`:`neutral`,variant:e.slug===b(c)?`soft`:`ghost`,"trailing-icon":e.slug===b(s)?.active?`i-ic-round-check-circle`:void 0,class:`justify-between`,"data-testid":`ambientes-selecionar-${e.slug}`,onClick:t=>I(e)},null,8,[`label`,`color`,`variant`,`trailing-icon`,`data-testid`,`onClick`]))),128)),b(y)?(t(),h(f,{key:0,modelValue:b(x),"onUpdate:modelValue":n[0]||=e=>a(x)?x.value=e:null,autofocus:``,placeholder:`Nome do ambiente`,"data-testid":`ambientes-novo-nome`,onKeyup:[P(R,[`enter`]),n[1]||=P(e=>y.value=!1,[`esc`])]},null,8,[`modelValue`])):o(``,!0),v(i,{icon:b(y)?`i-ic-round-check`:`i-ic-round-add`,label:b(y)?`Criar`:`Novo ambiente`,color:`neutral`,variant:`soft`,loading:b(E),disabled:b(y)&&!b(x).trim(),"data-testid":`ambientes-criar`,onClick:n[2]||=e=>b(y)?R():y.value=!0},null,8,[`icon`,`label`,`loading`,`disabled`])]),b(j)?(t(),l(`div`,vt,[v(g,{label:`Nome`},{default:A(()=>[v(f,{modelValue:b(d),"onUpdate:modelValue":n[3]||=e=>a(d)?d.value=e:null,class:`w-full`,"data-testid":`ambientes-nome`},null,8,[`modelValue`])]),_:1}),v(S,{modelValue:b(p),"onUpdate:modelValue":n[4]||=e=>a(p)?p.value=e:null,"known-keys":b(s)?.known_keys,testid:`ambientes-variaveis`},null,8,[`modelValue`,`known-keys`]),m(`div`,yt,[v(i,{label:`Salvar`,loading:b(E),disabled:!b(N),"data-testid":`ambientes-salvar`,onClick:z},null,8,[`loading`,`disabled`]),b(N)?(t(),h(i,{key:0,label:`Reverter`,color:`neutral`,variant:`soft`,"data-testid":`ambientes-reverter`,onClick:te})):o(``,!0),v(i,{label:b(C)?`Confirmar remoção`:`Remover`,color:`error`,variant:b(C)?`solid`:`ghost`,loading:b(E),"data-testid":`ambientes-remover`,onClick:V},null,8,[`label`,`variant`,`loading`])])])):b(T)?o(``,!0):(t(),h(D,{key:1,icon:`i-ic-round-layers`,testid:`ambientes-vazio`,title:`Nenhum ambiente ainda`,description:`Crie o primeiro ambiente para separar desenvolvimento, homologação e produção. Ele já nasce com o que o projeto tem configurado hoje.`}))])],32)]),footer:A(()=>[b(w)?(t(),l(`p`,bt,` Há alterações não salvas neste ambiente. `)):o(``,!0),v(i,{label:b(w)?`Descartar alterações`:`Fechar`,color:b(w)?`warning`:`neutral`,variant:b(w)?`soft`:`ghost`,"data-testid":`ambientes-fechar`,onClick:re},null,8,[`label`,`color`,`variant`])]),_:1},8,[`open`,`dismissable`])}}}),{__name:`ProjectEnvironmentsModal`}),St=Object.assign(s({__name:`modal`,props:O({slug:{},baseUrl:{}},{open:{type:Boolean,default:!1},openModifiers:{}}),emits:O([`saved`],[`update:open`]),setup(e,{emit:n}){let r=S(e,`open`),i=n,o=g(``),s=g(!1),c=g(!1),l=Ne();k(r,t=>{t&&(o.value=e.baseUrl??``)});async function u(){c.value=!0;try{await Z(`/api/projects/${e.slug}/settings/skip`,{method:`POST`}),r.value=!1,i(`saved`)}catch(e){l.failure(e,`Não foi possível deixar a URL em branco.`)}finally{c.value=!1}}async function d(){s.value=!0;try{await Z(`/api/projects/${e.slug}/settings`,{method:`PUT`,body:{baseUrl:o.value.trim()}}),r.value=!1,i(`saved`),l.success(`Configurações salvas`)}catch(e){l.failure(e,`Não foi possível salvar as configurações.`)}finally{s.value=!1}}return(e,n)=>{let i=Pe,l=H,f=B,p=pe,m=U;return t(),h(m,{open:r.value,"onUpdate:open":n[1]||=e=>r.value=e,dismissable:!1,title:`Configurações do projeto`},{body:A(()=>[v(i,{color:`neutral`,variant:`soft`,icon:`i-ic-round-info`,description:`A URL é um facilitador: com ela o navegador já abre no sistema ao gravar. Sem ela, a gravação sempre começa numa página em branco e você digita o endereço na mão.`,class:`mb-4`,"data-testid":`projeto-configuracoes-obrigatorio`}),v(f,{label:`URL base`,description:`Endereço do sistema que este projeto testa. É onde o navegador abre ao gravar, e a base que os testes usam ao rodar.`},{default:A(()=>[v(l,{modelValue:b(o),"onUpdate:modelValue":n[0]||=e=>a(o)?o.value=e:null,class:`w-full`,placeholder:`https://sistema.exemplo.com/app`,"data-testid":`projeto-configuracoes-base-url`,onKeyup:P(d,[`enter`])},null,8,[`modelValue`])]),_:1})]),footer:A(()=>[v(p,{label:`Deixar em branco`,color:`neutral`,variant:`ghost`,loading:b(c),"data-testid":`projeto-configuracoes-pular`,onClick:u},null,8,[`loading`]),v(p,{label:`Salvar`,loading:b(s),disabled:!b(o).trim(),"data-testid":`projeto-configuracoes-salvar`,onClick:d},null,8,[`loading`,`disabled`])]),_:1},8,[`open`])}}}),{__name:`ProjectSettingsModal`}),Ct={slots:{root:``,content:`data-[state=open]:animate-[collapsible-down_200ms_ease-out] data-[state=closed]:animate-[collapsible-up_200ms_ease-out] data-[state=closed]:overflow-hidden`}},wt={__name:`UCollapsible`,props:{as:{type:null,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1},defaultOpen:{type:Boolean,required:!1},open:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},unmountOnHide:{type:Boolean,required:!1,default:!0}},emits:[`update:open`],setup(n,{emit:r}){let i=n,a=r,s=e(),c=K(`collapsible`,i),l=Te(),u=ue(X(c,`as`,`defaultOpen`,`open`,`disabled`,`unmountOnHide`),a),p=f(()=>ve({extend:Ct,...l.ui?.collapsible||{}})());return(e,n)=>(t(),h(b(Ye),E(b(u),{"data-slot":`root`,class:p.value.root({class:[b(c).ui?.root,b(c).class]})}),{default:A(({open:n})=>[s.default?(t(),h(b(Ze),{key:0,"as-child":``},{default:A(()=>[d(e.$slots,`default`,{open:n})]),_:2},1024)):o(``,!0),v(b(Xe),{"data-slot":`content`,class:j(p.value.content({class:b(c).ui?.content}))},{default:A(()=>[d(e.$slots,`content`)]),_:3},8,[`class`])]),_:3},16,[`class`]))}},Tt={class:`flex flex-col pt-6 gap-2`},Et={key:0,class:`text-xl font-bold`},Dt={key:0,class:`mb-6 space-y-0.5 text-sm`,"data-testid":`execucao-detalhes`},Ot={key:0},kt={key:1},At={class:`block whitespace-pre-wrap font-mono text-xs`},jt={class:`flex flex-col gap-3`},Mt={class:`grow truncate text-left`,"data-testid":`execucao-teste-titulo`},Nt={class:`mt-1 rounded-md bg-elevated py-3 pl-3.5 pr-3`},Pt={key:1,class:`text-sm text-dimmed`},Ft=Object.assign(s({__name:`modal`,props:O({running:{type:Boolean,default:!1},passed:{type:Boolean,default:!1},tests:{default:()=>[]},projectName:{},slug:{},filter:{default:``},testedAt:{default:null},output:{default:null}},{open:{type:Boolean,default:!1},openModifiers:{}}),emits:[`update:open`],setup(e){let r=S(e,`open`),i={waiting:`i-ic-round-radio-button-unchecked`,running:`line-md:loading-twotone-loop`,success:`i-ic-round-check-circle`,failed:`i-ic-round-error`},a={waiting:`text-dimmed`,running:`text-neutral`,success:`text-success`,failed:`text-error`},s=g([]);k(()=>e.tests,e=>{if(!e.length){s.value=[];return}let t=e.filter(e=>e.status===`failed`).map(e=>e.id);s.value=[...new Set([...s.value,...t])]},{deep:!0,immediate:!0});function d(e,t){s.value=t?[...s.value,e]:s.value.filter(t=>t!==e)}function f(e){return e.error&&e.steps.every(e=>e.status!==`failed`)?e.error:null}return(p,g)=>{let y=Ae,x=Ke,S=Pe,w=pe,T=Le,E=We,D=wt,O=U;return t(),h(O,{open:r.value,"onUpdate:open":g[1]||=e=>r.value=e,dismissable:!e.running,wide:``},n({header:A(()=>[m(`div`,Tt,[e.running?(t(),l(`p`,Et,` Testando cenários filtrados... `)):(t(),l(_,{key:1},[v(y,{class:`self-start`,color:e.passed?`success`:`error`,icon:e.passed?`i-ic-round-check-circle`:`i-ic-round-error`,label:e.passed?`Sucesso`:`Falha`,"data-testid":`execucao-status`},null,8,[`color`,`icon`,`label`]),g[2]||=m(`p`,{class:`mt-2 text-xl font-bold`},` Resultado dos testes `,-1)],64))])]),body:A(()=>[e.running&&e.tests.length===0?(t(),h(x,{key:0,phrases:[`Iniciando a execução`],"data-testid":`execucao-iniciando`})):(t(),l(_,{key:1},[e.running?o(``,!0):(t(),l(`div`,Dt,[m(`p`,null,[g[3]||=m(`span`,{class:`font-semibold`},`Projeto:`,-1),c(` `+C(e.projectName),1)]),e.filter?(t(),l(`p`,Ot,[g[4]||=m(`span`,{class:`font-semibold`},`Filtro:`,-1),c(` `+C(e.filter),1)])):o(``,!0),m(`p`,null,[g[5]||=m(`span`,{class:`font-semibold`},`Cenários:`,-1),c(` `+C(e.tests.length),1)]),e.testedAt?(t(),l(`p`,kt,[g[6]||=m(`span`,{class:`font-semibold`},`Testado em:`,-1),c(` `+C(e.testedAt),1)])):o(``,!0)])),e.output?(t(),h(S,{key:1,color:`error`,variant:`soft`,icon:`i-ic-round-error`,title:`A execução não chegou a começar`,class:`mb-6`,"data-testid":`execucao-saida`},{description:A(()=>[g[7]||=m(`p`,{class:`mb-2`},` O Playwright encerrou antes de rodar qualquer passo. Saída do runner: `,-1),m(`code`,At,C(e.output),1)]),_:1})):o(``,!0),m(`div`,jt,[(t(!0),l(_,null,u(e.tests,e=>(t(),h(D,{key:e.id,open:b(s).includes(e.id),"data-testid":`execucao-teste`,"data-status":e.status,"onUpdate:open":t=>d(e.id,t)},{content:A(()=>[m(`div`,Nt,[f(e)?(t(),h(T,{key:0,error:f(e),"data-testid":`execucao-teste-erro`},null,8,[`error`])):e.steps.length===0?(t(),l(`p`,Pt,` Nenhum passo reportado. `)):o(``,!0),v(E,{steps:e.steps},null,8,[`steps`])])]),default:A(()=>[v(w,{block:``,color:`neutral`,variant:`soft`,icon:i[e.status],"trailing-icon":`i-ic-round-expand-more`,ui:{base:`justify-start gap-3`,leadingIcon:a[e.status],trailingIcon:`text-dimmed`},"data-testid":`execucao-teste-abrir`},{default:A(()=>[m(`span`,Mt,C(e.title),1)]),_:2},1032,[`icon`,`ui`])]),_:2},1032,[`open`,`data-status`,`onUpdate:open`]))),128))])],64))]),_:2},[e.running?void 0:{name:`footer`,fn:A(()=>[v(w,{label:`Fechar`,color:`neutral`,variant:`ghost`,"data-testid":`execucao-fechar`,onClick:g[0]||=e=>r.value=!1}),v(w,{label:`Relatório do Playwright`,"trailing-icon":`i-ic-round-assessment`,to:b(Ue)(e.slug),target:`_blank`,external:``,"data-testid":`execucao-relatorio`},null,8,[`to`])]),key:`0`}]),1032,[`open`,`dismissable`])}}}),{__name:`ProjectRunFilteredModal`}),It={class:`flex items-start justify-between gap-4`},Lt={class:`flex flex-col gap-1 min-w-0`},Rt={class:`flex items-center gap-2`},zt=[`title`],Bt={key:0,class:`text-sm`,"data-testid":`projeto-branch`},Vt={class:`font-medium`},Ht={class:`text-xs text-dimmed`},Ut={class:`flex gap-2 shrink-0`},Wt={class:`flex flex-wrap items-center gap-4 mt-8 mb-8`},Gt=[`data-testid`],Kt={key:3,class:`mb-8 flex flex-col gap-3`},qt={key:4,class:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4`},Jt={class:`flex flex-col gap-2`},Yt={class:`font-semibold truncate`},Xt={class:`text-sm text-muted italic truncate`},Zt={class:`flex flex-wrap gap-1`},Qt=`tests/auth.setup.ts`,$t=s({__name:`[slug]`,async setup(e){let n,r,i=te(),s=f(()=>i.params.slug),d=g(!1);N(()=>{d.value=!0});let{data:p,error:y,refresh:x}=([n,r]=T(()=>oe(`/api/projects/${s.value}`,`$pWmjyfGnvu`)),n=await n,r(),n);if(y.value||!p.value)throw ee({statusCode:404,message:`Projeto não encontrado.`});let S=f(()=>Me(p.value)),w=f(()=>new Date(p.value.updated_at).toLocaleString(`pt-BR`,{dateStyle:`short`,timeStyle:`short`})),E=g(``),D=f(()=>{let e=E.value.trim().toLowerCase(),t=p.value?.scenarios??[];return e?t.filter(t=>t.title.toLowerCase().includes(e)||t.tags.some(t=>t.toLowerCase().includes(e))):t}),O=f(()=>D.value.filter(e=>!e.skipped)),j=ze(()=>s.value),M=g(!1);function P(){M.value=!0,j.start({grep:O.value.map(e=>e.title.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)).join(`|`)})}let F=g(!1);N(()=>{p.value?.requires_url&&(F.value=!0)});let I=g(!1),{data:re}=([n,r]=T(()=>oe(()=>`/api/projects/${s.value}/environments`,{key:`environments-${s.value}`},`$lUEBM9VzP8`)),n=await n,r(),n),L=f(()=>{let e=re.value;return(e?.environments.find(t=>t.slug===e.active)?.vars??[]).filter(e=>e.pending).map(e=>e.key)});N(()=>{te().query.environment!==void 0&&(I.value=!0)});async function ie(){await we(`environments-${s.value}`),await x()}let R=g(!1),z=g(!1),B=g(!1),V=f(()=>`/projects/${s.value}/scenarios/auth`),U=ze(()=>s.value),W=g(!1),ae=f(()=>({configured:`success`,failing:`error`,unset:`neutral`,skipped:`neutral`})[p.value.auth_status]);async function se(){B.value=!0;try{await Z(`/api/projects/${s.value}/auth/skip`,{method:`POST`}),await x()}finally{B.value=!1}}let{state:G,startRecording:K,stopRecording:ce}=De(),q=g(!1),J=g(`plain`),Y=f(()=>J.value===`public`),le=f(()=>p.value.auth_status===`configured`||p.value.auth_status===`failing`),ue=f(()=>[[{label:`Cenário autenticado`,description:`Entra no sistema antes de gravar`,icon:`i-ic-round-lock`,testid:`cenario-novo-autenticado`,onSelect:()=>Q()},{label:`Cenário público`,description:`Grava sem sessão (login, cadastro, landing)`,icon:`i-ic-round-public`,testid:`cenario-novo-publico`,onSelect:()=>fe()}]]),X=f(()=>p.value.base_url??void 0);function de(e){J.value=`plain`,K(`scenario`,{url:X.value,replay:e})}function fe(e){J.value=`public`,K(`scenario`,{url:X.value,replay:e})}function Q(e){J.value=`authenticated`,W.value=!0,U.start({spec:Qt},()=>{x(),U.passed.value&&(W.value=!1,K(`scenario`,{storageState:p.value.storage_state,url:X.value,replay:e}))})}function me(){return le.value?Q():de()}function he(e){if(J.value===`authenticated`)return Q(e);if(J.value===`public`)return fe(e);de(e)}k(()=>G.value.videoSessionId,e=>{e&&(q.value=!0)});let ge=f(()=>G.value.replayFailedStep?`Aguardando você na janela`:G.value.replaying?`Refazendo os passos`:`Parar gravação`);function _e(){ce()}function ve(e){ne(`/projects/${e}`)}async function ye(){z.value=!0;try{await Z(`/api/projects/${s.value}`,{method:`DELETE`}),await ne(`/`)}finally{z.value=!1}}return(e,n)=>{let r=ke,i=Ae,f=$e,g=rt,y=pe,T=Pe,k=H,N=ot,ee=Ie,te=Be,re=je,oe=ut,K=xt,ce=St,J=Ft,X=Ve,fe=He,Z=Fe;return t(),h(Z,{"data-hydrated":b(d),class:`py-6 lg:py-10`},{default:A(()=>[m(`div`,It,[m(`div`,Lt,[m(`div`,Rt,[v(r,{icon:`i-ic-round-arrow-back`,label:`Voltar`,variant:`ghost`,color:`neutral`,to:`/`,"data-testid":`projeto-voltar`}),v(i,{icon:b(S).icon,label:b(S).label,"data-testid":`projeto-origem`},null,8,[`icon`,`label`])]),v(f,{slug:b(s),name:b(p).name,onRenamed:ve},null,8,[`slug`,`name`]),m(`p`,{class:`text-sm text-muted italic truncate`,title:b(p).repository??void 0,"data-testid":`projeto-caminho`},C(b(p).path),9,zt),b(p).branch?(t(),l(`p`,Bt,[n[15]||=c(` Branch: `,-1),m(`span`,Vt,C(b(p).branch),1)])):o(``,!0),m(`p`,Ht,` Última modificação: `+C(b(w)),1)]),m(`div`,Ut,[v(g,{slug:b(s),onEdit:n[0]||=e=>I.value=!0,onActivated:n[1]||=e=>b(x)()},null,8,[`slug`]),v(r,{icon:`i-ic-round-key`,label:`Autenticação`,color:b(ae),variant:`soft`,to:b(V),"data-testid":`projeto-auth`},null,8,[`color`,`to`]),b(p).has_report?(t(),h(r,{key:0,icon:`i-ic-round-assessment`,label:`Relatório da última execução`,color:`neutral`,variant:`soft`,to:b(Ue)(b(s)),target:`_blank`,external:``,"data-testid":`projeto-relatorio`},null,8,[`to`])):o(``,!0),v(r,{icon:`i-ic-round-code`,label:`Abrir no VS Code`,color:`neutral`,variant:`soft`,to:b(p).vscode_url,target:`_blank`,"data-testid":`projeto-vscode`},null,8,[`to`]),v(r,{icon:`i-ic-round-delete`,label:`Remover projeto`,color:`error`,variant:`soft`,"data-testid":`projeto-remover`,onClick:n[2]||=e=>R.value=!0})])]),b(L).length?(t(),h(T,{key:0,color:`warning`,variant:`soft`,icon:`i-ic-round-warning`,class:`mt-6`,title:`Variáveis do ambiente sem valor`,description:`A execução vai falhar até ${b(L).join(`, `)} receber valor no ambiente ativo.`,"data-testid":`projeto-variaveis-aviso`,ui:{actions:`justify-end`}},{actions:A(()=>[v(y,{label:`Preencher`,size:`md`,color:`neutral`,variant:`link`,"data-testid":`projeto-variaveis-preencher`,onClick:n[3]||=e=>I.value=!0})]),_:1},8,[`description`])):o(``,!0),b(p).auth_status===`unset`?(t(),h(T,{key:1,color:`warning`,variant:`soft`,icon:`i-ic-round-warning`,class:`mt-6`,title:`Sem autenticação configurada`,description:`Cenários gravados após um login vão falhar na verificação até a autenticação ser configurada.`,"data-testid":`projeto-auth-aviso`,ui:{actions:`justify-end`}},{actions:A(()=>[v(y,{label:`Não precisa de login`,size:`md`,color:`neutral`,variant:`link`,loading:b(B),"data-testid":`projeto-auth-dispensar`,onClick:se},null,8,[`loading`]),v(y,{label:`Configurar`,size:`md`,color:`warning`,to:b(V),"data-testid":`projeto-auth-configurar`},null,8,[`to`])]),_:1})):b(p).auth_status===`failing`?(t(),h(T,{key:2,color:`error`,variant:`soft`,icon:`i-ic-round-error`,class:`mt-6`,title:`A autenticação não está funcionando`,description:`A última execução do login falhou. Todo cenário deste projeto roda o login antes, então eles vão falhar junto até isso ser resolvido.`,"data-testid":`projeto-auth-falhando`,ui:{actions:`justify-end`}},{actions:A(()=>[v(y,{label:`Ver autenticação`,size:`md`,color:`error`,to:b(V),"data-testid":`projeto-auth-revisar`},null,8,[`to`])]),_:1})):o(``,!0),m(`div`,Wt,[v(k,{modelValue:b(E),"onUpdate:modelValue":n[4]||=e=>a(E)?E.value=e:null,"data-testid":`cenario-busca`,icon:`i-ic-round-search`,placeholder:`Buscar cenário...`,class:`flex-1 min-w-48`},null,8,[`modelValue`]),v(y,{label:`Rodar ${b(O).length} filtrados`,"trailing-icon":`i-ic-round-play-arrow`,color:`neutral`,variant:`soft`,disabled:!b(O).length,loading:b(j).running.value,"data-testid":`projeto-rodar-filtrados`,onClick:P},null,8,[`label`,`disabled`,`loading`]),!b(G).recording&&b(le)?(t(),h(N,{key:0,items:b(ue)},{"item-label":A(({item:e})=>[m(`span`,{"data-testid":e.testid},C(e.label),9,Gt)]),default:A(()=>[v(y,{"data-testid":`cenario-novo`,label:`Novo cenário`,"trailing-icon":`i-ic-round-expand-more`,disabled:!b(G).connected},null,8,[`disabled`])]),_:1},8,[`items`])):b(G).recording?(t(),h(y,{key:2,"data-testid":`cenario-parar`,label:b(ge),"trailing-icon":`i-ic-round-stop`,color:`error`,class:`animate-pulse`,disabled:b(G).replaying,onClick:_e},null,8,[`label`,`disabled`])):(t(),h(y,{key:1,"data-testid":`cenario-novo`,label:`Novo cenário`,"trailing-icon":`i-ic-round-add`,disabled:!b(G).connected,onClick:n[5]||=e=>de()},null,8,[`disabled`]))]),b(G).error?(t(),l(`div`,Kt,[v(T,{color:`error`,variant:`soft`,"data-testid":`webdriver-erro`,description:b(G).error},null,8,[`description`]),b(G).error.includes(`Chrome`)?(t(),h(ee,{key:0})):o(``,!0)])):o(``,!0),v(te,{open:b(q),"onUpdate:open":n[6]||=e=>a(q)?q.value=e:null,slug:b(s),"is-public":b(Y),onGenerated:n[7]||=e=>b(x)(),onRerecord:he,onResume:he},null,8,[`open`,`slug`,`is-public`]),b(D).length?(t(),l(`div`,qt,[(t(!0),l(_,null,u(b(D),e=>(t(),h(re,{key:e.spec,"data-testid":`cenario-card`,class:`cursor-pointer`,onClick:t=>b(ne)(`/projects/${b(s)}/scenarios/${e.spec.replace(/^tests\//,``).replace(/\.spec\.ts$/,``)}`)},{default:A(()=>[m(`div`,Jt,[m(`p`,Yt,C(e.title),1),m(`p`,Xt,C(e.spec),1),m(`div`,Zt,[e.skipped?(t(),h(i,{key:0,color:`warning`,variant:`soft`,size:`md`,icon:`i-ic-round-pause-circle`,label:`Pulado`,"data-testid":`cenario-card-pulado`})):o(``,!0),(t(!0),l(_,null,u(e.tags,e=>(t(),h(i,{key:e,color:b(Ge)(e),size:`md`,label:e},null,8,[`color`,`label`]))),128))])])]),_:2},1032,[`onClick`]))),128))])):(t(),h(oe,{key:5,disabled:!b(G).connected,onRecord:me},null,8,[`disabled`])),v(K,{open:b(I),"onUpdate:open":n[8]||=e=>a(I)?I.value=e:null,slug:b(s),onSaved:ie},null,8,[`open`,`slug`]),v(ce,{open:b(F),"onUpdate:open":n[9]||=e=>a(F)?F.value=e:null,slug:b(s),"base-url":b(p).base_url,onSaved:n[10]||=e=>b(x)()},null,8,[`open`,`slug`,`base-url`]),v(J,{open:b(M),"onUpdate:open":n[11]||=e=>a(M)?M.value=e:null,running:b(j).running.value,passed:b(j).passed.value,tests:b(j).tests.value,"project-name":b(p).name,slug:b(s),filter:b(E),"tested-at":b(j).testedAt.value,output:b(j).output.value},null,8,[`open`,`running`,`passed`,`tests`,`project-name`,`slug`,`filter`,`tested-at`,`output`]),v(X,{open:b(W),"onUpdate:open":n[12]||=e=>a(W)?W.value=e:null,running:b(U).running.value,passed:b(U).passed.value,steps:b(U).steps.value,"video-url":b(U).videoUrl.value,"project-name":b(p).name,kind:`autenticacao`,"running-title":`Autenticando`,"scenario-name":Qt,branch:b(p).branch,"tested-at":b(U).testedAt.value,output:b(U).output.value,onFix:n[13]||=e=>b(ne)(b(V))},null,8,[`open`,`running`,`passed`,`steps`,`video-url`,`project-name`,`branch`,`tested-at`,`output`]),v(fe,{open:b(R),"onUpdate:open":n[14]||=e=>a(R)?R.value=e:null,title:`Remover projeto`,description:`Isso apaga a pasta ${b(p).path} e todos os testes dentro dela.`,"confirm-label":`Remover`,"confirm-color":`error`,"confirm-testid":`projeto-remover-confirmar`,loading:b(z),onConfirm:ye},null,8,[`open`,`description`,`loading`])]),_:1},8,[`data-hydrated`])}}});export{$t as default};