PageSourceSearch

https://puggy.dev/assets/GoldenTestDetail-CoSbSjXg.js

js puggy.dev collected 2026-10-02 01:53:38 UTC 6,348 bytes, 1 lines download raw bytes

1import{d as S,z as B,j as R,c as u,k as j,v as U,a as n,b as v,w as r,e as d,t as m,u as t,_ as k,o as s,F as y,y as h,q as x,i as $,bB as O,bJ as q,bC as J,br as K,bg as Q,be as W,f as C,Q as X,R as Y}from"./index-C-VYsWS7.js";import{_ as H}from"./SectionPage.vue_vue_type_script_setup_true_lang-deIpAYVR.js";import{_ as Z}from"./ListSkeleton.vue_vue_type_script_setup_true_lang-9UzBmckg.js";import{e as ee,f as te,b as se,G as ae,d as ne,c as oe}from"./golden-test-DPe1BKO-.js";import{_ as le}from"./AlertTitle.vue_vue_type_script_setup_true_lang-wafEwFhA.js";import"./Loader.vue_vue_type_script_setup_true_lang-DhiOmN82.js";const ie={class:"mt-2 flex items-center gap-2"},re=S({__name:"SpecEditor",props:{modelValue:{},saving:{type:Boolean}},emits:["save"],setup(i,{emit:_}){const f=i,p=_,a=B(f.modelValue);return R(()=>f.modelValue,e=>{a.value=e}),(e,o)=>(s(),u("div",null,[j(n("textarea",{"onUpdate:modelValue":o[0]||(o[0]=c=>a.value=c),spellcheck:"false",class:"h-[28rem] w-full resize-y rounded-md border border-input bg-background p-3 font-mono text-xs leading-relaxed"},null,512),[[U,a.value]]),n("div",ie,[v(t(k),{size:"sm",disabled:a.value===i.modelValue||i.saving,onClick:o[1]||(o[1]=c=>p("save",a.value))},{default:r(()=>[d(m(i.saving?"Saving…":"Save"),1)]),_:1},8,["disabled"]),v(t(k),{size:"sm",variant:"ghost",disabled:a.value===i.modelValue,onClick:o[2]||(o[2]=c=>a.value=i.modelValue)},{default:r(()=>[...o[3]||(o[3]=[d(" Reset ",-1)])]),_:1},8,["disabled"])])]))}}),ue={key:0,class:"space-y-1"},de={class:"rounded-md border bg-muted/30 p-2"},ce={class:"text-sm font-medium"},me={class:"truncate text-xs text-muted-foreground"},fe={class:"font-mono"},pe={key:1,class:"text-sm text-muted-foreground"},ve=S({__name:"FlowGraph",props:{flowMap:{}},setup(i){const _=i;function f(a){return _.flowMap.edges.filter(e=>e.from===a)}function p(a){const e=_.flowMap.nodes.find(o=>o.id===a);return(e==null?void 0:e.title)||(e==null?void 0:e.url)||a}return(a,e)=>i.flowMap.nodes.length?(s(),u("div",ue,[(s(!0),u(y,null,h(i.flowMap.nodes,o=>(s(),u(y,{key:o.id},[n("div",de,[n("div",ce,m(o.title||"Page"),1),n("div",me,m(o.url),1)]),(s(!0),u(y,null,h(f(o.id),c=>(s(),u("div",{key:`${c.from}-${c.to}-${c.stepIndex}`,class:"pl-3 text-xs text-muted-foreground"},[e[0]||(e[0]=d(" ↓ ",-1)),n("span",fe,m(c.action),1),d(" → "+m(p(c.to)),1)]))),128))],64))),128))])):(s(),u("p",pe,"No navigation was captured for this test."))}}),_e={key:0,class:"w-full text-sm"},xe={class:"py-2 pr-3"},ge={class:"pr-3 font-mono text-xs"},ye={class:"font-mono text-xs"},be={key:1,class:"text-sm text-muted-foreground"},ke=S({__name:"TraceabilityTable",props:{flowMap:{}},setup(i){return(_,f)=>i.flowMap.assertions.length?(s(),u("table",_e,[f[0]||(f[0]=n("thead",null,[n("tr",{class:"border-b text-left text-xs uppercase text-muted-foreground"},[n("th",{class:"py-2 pr-3 font-medium"},"Acceptance criterion"),n("th",{class:"pr-3 font-medium"},"Kind"),n("th",{class:"font-medium"},"Steps")])],-1)),n("tbody",null,[(s(!0),u(y,null,h(i.flowMap.assertions,(p,a)=>(s(),u("tr",{key:a,class:"border-b align-top"},[n("td",xe,m(p.criterion),1),n("td",ge,m(p.kind),1),n("td",ye,m(p.fromSteps.join(", ")||"—"),1)]))),128))])])):(s(),u("p",be,"This test has no acceptance criteria."))}}),we={class:"mx-auto w-full max-w-5xl px-4 py-5 sm:px-6 lg:px-8"},$e={class:"mb-4 flex flex-wrap items-center gap-2"},he={class:"truncate text-xs text-muted-foreground"},Be=S({__name:"GoldenTestDetail",setup(i){const _=X(),f=Y(),p=$(()=>String(_.params.orgId??"")),a=$(()=>String(_.params.id??"")),{data:e,isLoading:o,isError:c}=ee(a),T=te(),G=se(),w=B("script"),D=[{key:"script",label:"Script"},{key:"flow",label:"Flow"},{key:"trace",label:"Traceability"}],F={testCase:{name:"",instruction:"",acceptanceCriteria:[]},nodes:[],edges:[],steps:[],assertions:[]},M=$(()=>{var g;return oe((g=e.value)==null?void 0:g.flow_map)??F}),L={draft:"secondary",golden:"success",archived:"outline"},N=$(()=>f.resolve({name:"golden-tests",params:{orgId:p.value}}).fullPath);async function P(g){await T.mutateAsync({id:a.value,specContent:g,generatedBy:"edited"})}async function V(g){await T.mutateAsync({id:a.value,status:g})}async function E(){await G.mutateAsync(a.value),f.push({name:"golden-tests",params:{orgId:p.value}})}function I(){e.value&&ne([e.value])}return(g,l)=>{var A,z;return s(),x(H,{title:((A=t(e))==null?void 0:A.name)||"Golden test",subtitle:(z=t
1(e))==null?void 0:z.instruction,"show-back-button":"","back-route":N.value},{"header-actions":r(()=>[t(e)?(s(),u(y,{key:0},[v(t(k),{size:"xs",variant:"outline",onClick:I},{default:r(()=>[...l[2]||(l[2]=[d("Download project",-1)])]),_:1}),t(e).status!=="golden"?(s(),x(t(k),{key:0,size:"xs",variant:"secondary",onClick:l[0]||(l[0]=b=>V("golden"))},{default:r(()=>[...l[3]||(l[3]=[d(" Promote to golden ",-1)])]),_:1})):C("",!0),t(e).status!=="archived"?(s(),x(t(k),{key:1,size:"xs",variant:"outline",onClick:l[1]||(l[1]=b=>V("archived"))},{default:r(()=>[...l[4]||(l[4]=[d(" Archive ",-1)])]),_:1})):C("",!0),v(t(k),{size:"xs",variant:"destructive",onClick:E},{default:r(()=>[...l[5]||(l[5]=[d("Delete",-1)])]),_:1})],64)):C("",!0)]),default:r(()=>[n("div",we,[t(o)?(s(),x(Z,{key:0,rows:4,"row-class":"h-16"})):t(c)||!t(e)?(s(),x(t(O),{key:1,variant:"destructive"},{default:r(()=>[v(t(q),{class:"size-4"}),v(t(le),null,{default:r(()=>[...l[6]||(l[6]=[d("Couldn't load this golden test",-1)])]),_:1}),v(t(J),null,{default:r(()=>[...l[7]||(l[7]=[d(" The test may have been deleted, or something went wrong fetching it. ",-1)])]),_:1})]),_:1})):(s(),u(y,{key:2},[n("div",$e,[v(t(K),{variant:L[t(e).status]},{default:r(()=>[d(m(t(ae)[t(e).status]),1)]),_:1},8,["variant"]),n("span",he,m(t(e).application_url),1)]),v(t(W),{manual:"",variant:"underline",class:"mb-3 w-full max-w-full"},{default:r(()=>[(s(),u(y,null,h(D,b=>v(t(Q),{key:b.key,variant:"underline",active:w.value===b.key,onClick:Se=>w.value=b.key},{default:r(()=>[d(m(b.label),1)]),_:2},1032,["active","onClick"])),64))]),_:1}),w.value==="script"?(s(),x(re,{key:0,"model-value":t(e).spec_content,saving:t(T).isPending.value,onSave:P},null,8,["model-value","saving"])):w.value==="flow"?(s(),x(ve,{key:1,"flow-map":M.value},null,8,["flow-map"])):(s(),x(ke,{key:2,"flow-map":M.value},null,8,["flow-map"]))],64))])]),_:1},8,["title","subtitle","back-route"])}}});export{Be as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.