@magnit-ce/code-tests 0.0.12 → 0.0.13
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.
- package/dist/code-tests.cjs +3 -3
- package/dist/code-tests.js +3 -3
- package/dist/code-tests.min.js +3 -3
- package/package.json +1 -1
package/dist/code-tests.cjs
CHANGED
|
@@ -709,18 +709,18 @@ var CodeTestsElement = class extends HTMLElement {
|
|
|
709
709
|
}
|
|
710
710
|
const afterAll = tests["afterall" /* AfterAll */];
|
|
711
711
|
if (afterAll != null) {
|
|
712
|
-
this.#hooks["afterall" /* AfterAll */] =
|
|
712
|
+
this.#hooks["afterall" /* AfterAll */] = afterAll;
|
|
713
713
|
delete tests["afterall" /* AfterAll */];
|
|
714
714
|
this.classList.add("has-after-hook");
|
|
715
715
|
}
|
|
716
716
|
const beforeEach = tests["beforeeach" /* BeforeEach */];
|
|
717
717
|
if (beforeEach != null) {
|
|
718
|
-
this.#hooks["beforeeach" /* BeforeEach */] =
|
|
718
|
+
this.#hooks["beforeeach" /* BeforeEach */] = beforeEach;
|
|
719
719
|
delete tests["beforeeach" /* BeforeEach */];
|
|
720
720
|
}
|
|
721
721
|
const afterEach = tests["aftereach" /* AfterEach */];
|
|
722
722
|
if (afterEach != null) {
|
|
723
|
-
this.#hooks["aftereach" /* AfterEach */] =
|
|
723
|
+
this.#hooks["aftereach" /* AfterEach */] = afterEach;
|
|
724
724
|
delete tests["aftereach" /* AfterEach */];
|
|
725
725
|
}
|
|
726
726
|
const requiredBeforeAny = tests["requiredbeforeany" /* RequiredBeforeAny */];
|
package/dist/code-tests.js
CHANGED
|
@@ -678,18 +678,18 @@ var CodeTestsElement = class extends HTMLElement {
|
|
|
678
678
|
}
|
|
679
679
|
const afterAll = tests["afterall" /* AfterAll */];
|
|
680
680
|
if (afterAll != null) {
|
|
681
|
-
this.#hooks["afterall" /* AfterAll */] =
|
|
681
|
+
this.#hooks["afterall" /* AfterAll */] = afterAll;
|
|
682
682
|
delete tests["afterall" /* AfterAll */];
|
|
683
683
|
this.classList.add("has-after-hook");
|
|
684
684
|
}
|
|
685
685
|
const beforeEach = tests["beforeeach" /* BeforeEach */];
|
|
686
686
|
if (beforeEach != null) {
|
|
687
|
-
this.#hooks["beforeeach" /* BeforeEach */] =
|
|
687
|
+
this.#hooks["beforeeach" /* BeforeEach */] = beforeEach;
|
|
688
688
|
delete tests["beforeeach" /* BeforeEach */];
|
|
689
689
|
}
|
|
690
690
|
const afterEach = tests["aftereach" /* AfterEach */];
|
|
691
691
|
if (afterEach != null) {
|
|
692
|
-
this.#hooks["aftereach" /* AfterEach */] =
|
|
692
|
+
this.#hooks["aftereach" /* AfterEach */] = afterEach;
|
|
693
693
|
delete tests["aftereach" /* AfterEach */];
|
|
694
694
|
}
|
|
695
695
|
const requiredBeforeAny = tests["requiredbeforeany" /* RequiredBeforeAny */];
|
package/dist/code-tests.min.js
CHANGED
|
@@ -461,9 +461,9 @@ pre
|
|
|
461
461
|
<button class="prompt-button reject" type="button">Reject</button>
|
|
462
462
|
</div>
|
|
463
463
|
</div>
|
|
464
|
-
</template>`;var
|
|
464
|
+
</template>`;var y=class extends Promise{async toBeDefined(e){if(await this==null)throw new Error(`${e??"Value"} is undefined`)}async toBe(e,r=!1){let t=await this;if((r==!0?t===e:t==e)==!1)throw new Error(` Value is not equal.
|
|
465
465
|
Expected: ${e}
|
|
466
|
-
Result: ${t}`)}async toContainText(e){let r=await this}async toHaveAttribute(e){let r=await this;if(!(r instanceof HTMLElement))throw new Error("Unable to check for attribute on non-HTMLElement target");if(r.getAttribute(e))throw new Error("Taret does not have attribute")}},y=class f{static timeoutMS=500;static#e;static#r;static expect(e){return new b(async(t,s)=>{if(e instanceof Promise){let n=await e;t(n);return}t(e)})}static expectSync(e){return new b(async(t,s)=>{if(e instanceof Promise){let n=await e;t(n);return}t(e)})}static expectBefore(e){return new b(async(t,s)=>{if(e instanceof Promise){let n=await e;t(n);return}t(e)})}static async prompt(e,r,t,s){return new Promise((n,l)=>{let i=e.findElement("prompt-template"),o=f.createElementFromTemplate(i);o.querySelector(".label").textContent=t;let a=u=>{let c=u.composedPath();if(c.find(h=>h instanceof HTMLButtonElement&&h.classList.contains("accept"))!=null){let h=s?.onAccept?.()??!0;o.removeEventListener("click",a),n(h);return}if(c.find(h=>h instanceof HTMLButtonElement&&h.classList.contains("reject"))!=null){let h=s?.onReject?.()??!1;o.removeEventListener("click",a),n(h);return}};o.addEventListener("click",a),s?.acceptLabel!=null&&(o.querySelector(".accept").textContent=s.acceptLabel),s?.rejectLabel!=null&&(o.querySelector(".reject").textContent=s.rejectLabel);let p=r instanceof HTMLDetailsElement?r:r.querySelector(".test-details");p!=null&&(p.open=!0),r.querySelector(".result")?.append(o)})}static createElementFromTemplate(e,r){let t=e instanceof HTMLTemplateElement?e:document.querySelector(e);if(t==null)throw new Error(`Unable to find template element from selector: ${e}`);let s=t.content.cloneNode(!0).querySelector("*");if(s==null)throw new Error("Unable to find first child of template element");return r?.append(s),s}};function S(f){return y.expect(f)}function $(f,e,r,t){return y.prompt(f,e,r,t)}var A=":not(slot,defs,g,rect,path,circle,ellipse,line,polygon,text,tspan,use,svg image,svg title,desc,template,template *)";function L(f){let e=[...f.querySelectorAll(`${A}[id]`)];for(let t=0;t<e.length;t++)e[t].part.add(e[t].id);let r=[...f.querySelectorAll(`${A}[class]`)];for(let t=0;t<r.length;t++)r[t].part.add(...r[t].classList)}var P=(l=>(l.BeforeAll="beforeall",l.AfterAll="afterall",l.BeforeEach="beforeeach",l.AfterEach="aftereach",l.RequiredBeforeAny="requiredbeforeany",l.RequiredAfterAny="requiredafterany",l))(P||{}),F=(n=>(n.BeforeAll="beforeall",n.AfterAll="afterall",n.BeforeTest="beforetest",n.AfterTest="aftertest",n.Cancel="cancel",n))(F||{}),v=Symbol("No Test Defined"),H=new CSSStyleSheet;H.replaceSync(w);var C="code-tests",k=class extends HTMLElement{componentParts=new Map;getElement(e){if(this.componentParts.get(e)==null){let r=this.findElement(e);r!=null&&this.componentParts.set(e,r)}return this.componentParts.get(e)}findElement(e){return this.shadowRoot.getElementById(e)}#e={};#r=!0;constructor(){super(),this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML=x,this.shadowRoot.adoptedStyleSheets.push(H),this.#c=this.#h.bind(this)}connectedCallback(){if(L(this.shadowRoot),this.addEventListener("click",this.#c),this.getAttribute("auto")=="false")return;let e=this.#d();e!=null&&this.loadTests(e)}disconnectedCallback(){this.removeEventListener("click",this.#c)}#c;#h(e){let r=e.composedPath().find(l=>l instanceof HTMLButtonElement&&l.classList.contains("run"));if(r==null)return;let t=r.closest("li");if(t==null){if(r.hasAttribute("data-all")==!0)if(this.classList.contains("running")){if(this.classList.contains("canceled"))return;this.cancel()}else this.runTests();return}let s=t.dataset.testId;if(s==null)return;let n=this.#s.get(s);n!=null&&(this.isCanceled=!1,this.classList.remove("canceled"),this.part.remove("canceled"),this.#u(s,n))}#d(){return this.getAttribute("src")??this.getAttribute("test")??this.getAttribute("tests")??this.getAttribute("run")??this.getAttribute("path")}async loadTests(e){let r=e??this.#d();if(r!=null)try{this.getElement("tests").innerHTML="",this.#s.clear(),this.classList.remove("has-before-hook"),this.classList.remove("has-after-hook");let t=window.location.href.lastIndexOf("/"),n=window.location.href.substring(t).indexOf(".")!=-1==!0?window.location.href.substring(0,t+1):window.location.href,l=n+r.substring(0,r.lastIndexOf("/")+1),i=n+r,o=await(await fetch(i)).text();o=o.replaceAll(/['"`](((\.\/)|(\.\.\/))+(.*))['"`]/g,`'${l}$1'`);let a=new File([o],r.substring(r.lastIndexOf("/")),{type:"text/javascript"}),u=await import(URL.createObjectURL(a)),c=u.tests??u.default;if(c==null)throw new Error(`Unable to find tests definition in file at path: ${r}`);let m=c.beforeall;m!=null&&(this.#e.beforeall=m,delete c.beforeall,this.classList.add("has-before-hook")),c.afterall!=null&&(this.#e.afterall=m,delete c.afterall,this.classList.add("has-after-hook")),c.beforeeach!=null&&(this.#e.beforeeach=m,delete c.beforeeach),c.aftereach!=null&&(this.#e.aftereach=m,delete c.aftereach);let d=c.requiredbeforeany;d!=null&&(this.#e.requiredbeforeany=d,delete c.requiredbeforeany,this.classList.add("has-required-before-hook"),this.part.add("has-required-before-hook"));let T=c.requiredafterany;T!=null&&(this.#e.requiredafterany=T,delete c.requiredafterany,this.classList.add("has-required-after-hook"),this.part.add("has-required-after-hook"));for(let[q,R]of Object.entries(c))this.#m(q,R)}catch(t){this.#i("An error occurred while loading the tasks:",t)}}isCanceled=!1;cancel(){this.isCanceled=!0,this.classList.add("canceled"),this.part.add("canceled"),this.dispatchEvent(new CustomEvent("cancel",{bubbles:!0,composed:!0}))}async runTests(){this.dispatchEvent(new CustomEvent("beforeall",{bubbles:!0,composed:!0})),this.#r=!0,this.classList.add("running"),this.isCanceled=!1,this.classList.remove("canceled"),this.part.remove("canceled"),this.toggleAttribute("success",!1);let e=this.findElement("play-button-label");e!=null&&(e.textContent="Cancel"),this.#f();let r=this.hasAttribute("in-order"),t=this.#e.requiredbeforeany;if(t!=null){let o;try{let a=this.getElement("required-before-any-details");if(a.classList.add("running"),a.part.add("running"),this.isCanceled==!0)throw new Error("Test has been cancelled");o=await t(this,a),this.#t(o,!0,"before",!0),a.part.remove("running"),a.classList.remove("running")}catch(a){this.#t(o,!1,"before",!0,a),console.error(a),this.#r=!1,this.classList.remove("running"),this.part.remove("running"),e!=null&&(e.textContent="Run Tests"),this.dispatchEvent(new CustomEvent("afterall",{bubbles:!0,composed:!0}));return}}let s=this.#e.beforeall;if(s!=null){let o;try{let a=this.getElement("before-all-details");if(a.classList.add("running"),a.part.add("running"),this.isCanceled==!0)throw new Error("Test has been cancelled");o=await s(this,a),this.#t(o,!0,"before",!1),a.part.remove("running"),a.classList.remove("running")}catch(a){this.#t(o,!1,"before",!1,a),console.error(a),this.#r=!1,this.classList.remove("running"),this.part.remove("running"),e!=null&&(e.textContent="Run Tests"),this.dispatchEvent(new CustomEvent("afterall",{bubbles:!0,composed:!0}));return}}if(r==!1){let o=[];for(let[a,p]of this.#s)o.push(this.#u(a,p));await Promise.all(o)}else for(let[o,a]of this.#s){if(this.#r==!1)break;await this.#u(o,a,!1)}if(this.#r==!1){this.classList.remove("running"),this.part.remove("running"),e!=null&&(e.textContent="Run Tests"),this.dispatchEvent(new CustomEvent("afterall",{bubbles:!0,composed:!0}));return}let n=this.#e.afterall;if(n!=null){let o;try{let a=this.getElement("after-all-details");if(a.classList.add("running"),a.part.add("running"),this.isCanceled==!0)throw new Error("Test has been cancelled");o=await n(this,a),this.#t(o,!0,"after",!1),a.part.remove("running"),a.classList.remove("running")}catch(a){this.#t(o,!1,"after",!1,a),console.error(a);let p=this.#e.requiredafterany;if(p!=null){let u;try{let c=this.getElement("required-after-any-details");if(c.classList.add("running"),c.part.add("running"),this.isCanceled==!0)throw new Error("Test has been cancelled");u=await p(this,c),this.#t(u,!0,"after",!0),c.part.remove("running"),c.classList.remove("running")}catch(c){this.#t(u,!1,"after",!0,c),console.error(c)}}this.#r=!1,this.classList.remove("running"),this.part.remove("running"),e!=null&&(e.textContent="Run Tests"),this.dispatchEvent(new CustomEvent("afterall",{bubbles:!0,composed:!0}));return}}let l=this.#e.requiredafterany;if(l!=null){let o;try{let a=this.getElement("required-after-any-details");if(a.classList.add("running"),a.part.add("running"),this.isCanceled==!0)throw new Error("Test has been cancelled");o=await l(this,a),this.#t(o,!0,"after",!0),a.part.remove("running"),a.classList.remove("running")}catch(a){this.#t(o,!1,"after",!0,a),console.error(a),this.#r=!1}}let i=this.shadowRoot.querySelectorAll('[success="false"]');this.setAttribute("success",i.length==0?"true":"false"),this.classList.remove("running"),this.part.remove("running"),e!=null&&(e.textContent="Run Tests"),this.dispatchEvent(new CustomEvent("afterall",{bubbles:!0,composed:!0}))}#f(){for(let[t,s]of this.#s){let n=this.getElement("tests").querySelector(`[data-test-id="${t}"]`);if(n==null){this.#i(`Unable to find test element for test: ${t}`);return}n.toggleAttribute("success",!1),n.classList.remove("success","fail"),n.part.remove("success","fail")}let e=this.getElement("before-all-details");e.toggleAttribute("success",!1),e.classList.remove("success","fail"),e.part.remove("success","fail");let r=this.getElement("after-all-details");r.toggleAttribute("success",!1),r.classList.remove("success","fail"),r.part.remove("success","fail")}async#u(e,r,t=!0){let s=this.getElement("tests").querySelector(`[data-test-id="${e}"]`);if(s==null){this.#i(`Unable to find test element for test: ${e}`);return}s.toggleAttribute("success",!1),s.classList.add("running"),s.part.add("running"),s.classList.remove("success","fail"),s.part.remove("success","fail");let n=s.querySelector(".result-icon");n?.classList.remove("success","fail"),n?.part.remove("success","fail"),n?.classList.add("running"),n?.part.add("running");let l=s.querySelector(".error-message");l!=null&&(l.textContent="");let i=s.querySelector("details");i!=null&&(i.open=!1);let o=v,a,p=v,u;try{let c=this.dispatchEvent(new CustomEvent("beforetest",{bubbles:!0,cancelable:!0,composed:!0,detail:{testElement:s}}));if(t==!0){let h=this.#e.requiredbeforeany;if(h!=null){let g;try{let d=this.getElement("required-before-any-details");if(d.classList.add("running"),d.part.add("running"),this.isCanceled==!0)throw new Error("Test has been cancelled");g=await h(this,d),this.#t(g,!0,"before",!0),d.part.remove("running"),d.classList.remove("running")}catch(d){this.#t(g,!0,"before",!0,d),console.error(d),this.#r=!1;return}}}if(this.#r==!1)throw new Error("Tests have been disabled from continuing to run.");if(c==!1||this.isCanceled==!0)throw new Error("Test has been cancelled");let m=this.#e.beforeeach;if(m!=null&&(o=await m(this,s)),this.isCanceled==!0)throw new Error("Test has been cancelled");if(a=await r(this,s),this.isCanceled==!0)throw new Error("Test has been cancelled");let E=this.#e.aftereach;if(E!=null&&(p=await E(this,s)),t==!0){let h=this.#e.requiredafterany;if(h!=null){let g;try{let d=this.getElement("required-before-any-details");if(d.classList.add("running"),d.part.add("running"),this.isCanceled==!0)throw new Error("Test has been cancelled");g=await h(this,d),this.#t(g,!0,"after",!0),d.part.remove("running"),d.classList.remove("running")}catch(d){this.#t(g,!0,"after",!0,d),console.error(d),this.#r=!1;return}}}u="before",o!=v&&this.#a(s,o,!0,void 0,u),u=void 0,this.#a(s,a,!0,void 0,u),u="after",p!=v&&this.#a(s,p,!0,void 0,u)}catch(c){this.#a(s,a,!1,c,u),console.error(c),this.#r=!1}finally{s?.classList.remove("running"),s?.part.remove("running"),n?.classList.remove("running"),n?.part.remove("running"),this.dispatchEvent(new CustomEvent("aftertest",{bubbles:!0,cancelable:!0,composed:!0,detail:{testElement:s}}))}}#a(e,r,t,s,n){if(r instanceof HTMLElement)this.#o(e,r,t,n);else if(r==null){let i=n==null?"Passed":"Hook Ran Successfully",o=this.#n(t==!0?`${i}`:`Failed${s!=null?`:
|
|
466
|
+
Result: ${t}`)}async toContainText(e){let r=await this}async toHaveAttribute(e){let r=await this;if(!(r instanceof HTMLElement))throw new Error("Unable to check for attribute on non-HTMLElement target");if(r.getAttribute(e))throw new Error("Taret does not have attribute")}},E=class f{static timeoutMS=500;static#e;static#r;static expect(e){return new y(async(t,s)=>{if(e instanceof Promise){let n=await e;t(n);return}t(e)})}static expectSync(e){return new y(async(t,s)=>{if(e instanceof Promise){let n=await e;t(n);return}t(e)})}static expectBefore(e){return new y(async(t,s)=>{if(e instanceof Promise){let n=await e;t(n);return}t(e)})}static async prompt(e,r,t,s){return new Promise((n,l)=>{let i=e.findElement("prompt-template"),o=f.createElementFromTemplate(i);o.querySelector(".label").textContent=t;let a=u=>{let c=u.composedPath();if(c.find(h=>h instanceof HTMLButtonElement&&h.classList.contains("accept"))!=null){let h=s?.onAccept?.()??!0;o.removeEventListener("click",a),n(h);return}if(c.find(h=>h instanceof HTMLButtonElement&&h.classList.contains("reject"))!=null){let h=s?.onReject?.()??!1;o.removeEventListener("click",a),n(h);return}};o.addEventListener("click",a),s?.acceptLabel!=null&&(o.querySelector(".accept").textContent=s.acceptLabel),s?.rejectLabel!=null&&(o.querySelector(".reject").textContent=s.rejectLabel);let p=r instanceof HTMLDetailsElement?r:r.querySelector(".test-details");p!=null&&(p.open=!0),r.querySelector(".result")?.append(o)})}static createElementFromTemplate(e,r){let t=e instanceof HTMLTemplateElement?e:document.querySelector(e);if(t==null)throw new Error(`Unable to find template element from selector: ${e}`);let s=t.content.cloneNode(!0).querySelector("*");if(s==null)throw new Error("Unable to find first child of template element");return r?.append(s),s}};function S(f){return E.expect(f)}function $(f,e,r,t){return E.prompt(f,e,r,t)}var A=":not(slot,defs,g,rect,path,circle,ellipse,line,polygon,text,tspan,use,svg image,svg title,desc,template,template *)";function L(f){let e=[...f.querySelectorAll(`${A}[id]`)];for(let t=0;t<e.length;t++)e[t].part.add(e[t].id);let r=[...f.querySelectorAll(`${A}[class]`)];for(let t=0;t<r.length;t++)r[t].part.add(...r[t].classList)}var P=(l=>(l.BeforeAll="beforeall",l.AfterAll="afterall",l.BeforeEach="beforeeach",l.AfterEach="aftereach",l.RequiredBeforeAny="requiredbeforeany",l.RequiredAfterAny="requiredafterany",l))(P||{}),F=(n=>(n.BeforeAll="beforeall",n.AfterAll="afterall",n.BeforeTest="beforetest",n.AfterTest="aftertest",n.Cancel="cancel",n))(F||{}),v=Symbol("No Test Defined"),H=new CSSStyleSheet;H.replaceSync(w);var C="code-tests",k=class extends HTMLElement{componentParts=new Map;getElement(e){if(this.componentParts.get(e)==null){let r=this.findElement(e);r!=null&&this.componentParts.set(e,r)}return this.componentParts.get(e)}findElement(e){return this.shadowRoot.getElementById(e)}#e={};#r=!0;constructor(){super(),this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML=x,this.shadowRoot.adoptedStyleSheets.push(H),this.#c=this.#h.bind(this)}connectedCallback(){if(L(this.shadowRoot),this.addEventListener("click",this.#c),this.getAttribute("auto")=="false")return;let e=this.#d();e!=null&&this.loadTests(e)}disconnectedCallback(){this.removeEventListener("click",this.#c)}#c;#h(e){let r=e.composedPath().find(l=>l instanceof HTMLButtonElement&&l.classList.contains("run"));if(r==null)return;let t=r.closest("li");if(t==null){if(r.hasAttribute("data-all")==!0)if(this.classList.contains("running")){if(this.classList.contains("canceled"))return;this.cancel()}else this.runTests();return}let s=t.dataset.testId;if(s==null)return;let n=this.#s.get(s);n!=null&&(this.isCanceled=!1,this.classList.remove("canceled"),this.part.remove("canceled"),this.#u(s,n))}#d(){return this.getAttribute("src")??this.getAttribute("test")??this.getAttribute("tests")??this.getAttribute("run")??this.getAttribute("path")}async loadTests(e){let r=e??this.#d();if(r!=null)try{this.getElement("tests").innerHTML="",this.#s.clear(),this.classList.remove("has-before-hook"),this.classList.remove("has-after-hook");let t=window.location.href.lastIndexOf("/"),n=window.location.href.substring(t).indexOf(".")!=-1==!0?window.location.href.substring(0,t+1):window.location.href,l=n+r.substring(0,r.lastIndexOf("/")+1),i=n+r,o=await(await fetch(i)).text();o=o.replaceAll(/['"`](((\.\/)|(\.\.\/))+(.*))['"`]/g,`'${l}$1'`);let a=new File([o],r.substring(r.lastIndexOf("/")),{type:"text/javascript"}),u=await import(URL.createObjectURL(a)),c=u.tests??u.default;if(c==null)throw new Error(`Unable to find tests definition in file at path: ${r}`);let g=c.beforeall;g!=null&&(this.#e.beforeall=g,delete c.beforeall,this.classList.add("has-before-hook"));let b=c.afterall;b!=null&&(this.#e.afterall=b,delete c.afterall,this.classList.add("has-after-hook"));let h=c.beforeeach;h!=null&&(this.#e.beforeeach=h,delete c.beforeeach);let m=c.aftereach;m!=null&&(this.#e.aftereach=m,delete c.aftereach);let d=c.requiredbeforeany;d!=null&&(this.#e.requiredbeforeany=d,delete c.requiredbeforeany,this.classList.add("has-required-before-hook"),this.part.add("has-required-before-hook"));let T=c.requiredafterany;T!=null&&(this.#e.requiredafterany=T,delete c.requiredafterany,this.classList.add("has-required-after-hook"),this.part.add("has-required-after-hook"));for(let[q,R]of Object.entries(c))this.#m(q,R)}catch(t){this.#i("An error occurred while loading the tasks:",t)}}isCanceled=!1;cancel(){this.isCanceled=!0,this.classList.add("canceled"),this.part.add("canceled"),this.dispatchEvent(new CustomEvent("cancel",{bubbles:!0,composed:!0}))}async runTests(){this.dispatchEvent(new CustomEvent("beforeall",{bubbles:!0,composed:!0})),this.#r=!0,this.classList.add("running"),this.isCanceled=!1,this.classList.remove("canceled"),this.part.remove("canceled"),this.toggleAttribute("success",!1);let e=this.findElement("play-button-label");e!=null&&(e.textContent="Cancel"),this.#f();let r=this.hasAttribute("in-order"),t=this.#e.requiredbeforeany;if(t!=null){let o;try{let a=this.getElement("required-before-any-details");if(a.classList.add("running"),a.part.add("running"),this.isCanceled==!0)throw new Error("Test has been cancelled");o=await t(this,a),this.#t(o,!0,"before",!0),a.part.remove("running"),a.classList.remove("running")}catch(a){this.#t(o,!1,"before",!0,a),console.error(a),this.#r=!1,this.classList.remove("running"),this.part.remove("running"),e!=null&&(e.textContent="Run Tests"),this.dispatchEvent(new CustomEvent("afterall",{bubbles:!0,composed:!0}));return}}let s=this.#e.beforeall;if(s!=null){let o;try{let a=this.getElement("before-all-details");if(a.classList.add("running"),a.part.add("running"),this.isCanceled==!0)throw new Error("Test has been cancelled");o=await s(this,a),this.#t(o,!0,"before",!1),a.part.remove("running"),a.classList.remove("running")}catch(a){this.#t(o,!1,"before",!1,a),console.error(a),this.#r=!1,this.classList.remove("running"),this.part.remove("running"),e!=null&&(e.textContent="Run Tests"),this.dispatchEvent(new CustomEvent("afterall",{bubbles:!0,composed:!0}));return}}if(r==!1){let o=[];for(let[a,p]of this.#s)o.push(this.#u(a,p));await Promise.all(o)}else for(let[o,a]of this.#s){if(this.#r==!1)break;await this.#u(o,a,!1)}if(this.#r==!1){this.classList.remove("running"),this.part.remove("running"),e!=null&&(e.textContent="Run Tests"),this.dispatchEvent(new CustomEvent("afterall",{bubbles:!0,composed:!0}));return}let n=this.#e.afterall;if(n!=null){let o;try{let a=this.getElement("after-all-details");if(a.classList.add("running"),a.part.add("running"),this.isCanceled==!0)throw new Error("Test has been cancelled");o=await n(this,a),this.#t(o,!0,"after",!1),a.part.remove("running"),a.classList.remove("running")}catch(a){this.#t(o,!1,"after",!1,a),console.error(a);let p=this.#e.requiredafterany;if(p!=null){let u;try{let c=this.getElement("required-after-any-details");if(c.classList.add("running"),c.part.add("running"),this.isCanceled==!0)throw new Error("Test has been cancelled");u=await p(this,c),this.#t(u,!0,"after",!0),c.part.remove("running"),c.classList.remove("running")}catch(c){this.#t(u,!1,"after",!0,c),console.error(c)}}this.#r=!1,this.classList.remove("running"),this.part.remove("running"),e!=null&&(e.textContent="Run Tests"),this.dispatchEvent(new CustomEvent("afterall",{bubbles:!0,composed:!0}));return}}let l=this.#e.requiredafterany;if(l!=null){let o;try{let a=this.getElement("required-after-any-details");if(a.classList.add("running"),a.part.add("running"),this.isCanceled==!0)throw new Error("Test has been cancelled");o=await l(this,a),this.#t(o,!0,"after",!0),a.part.remove("running"),a.classList.remove("running")}catch(a){this.#t(o,!1,"after",!0,a),console.error(a),this.#r=!1}}let i=this.shadowRoot.querySelectorAll('[success="false"]');this.setAttribute("success",i.length==0?"true":"false"),this.classList.remove("running"),this.part.remove("running"),e!=null&&(e.textContent="Run Tests"),this.dispatchEvent(new CustomEvent("afterall",{bubbles:!0,composed:!0}))}#f(){for(let[t,s]of this.#s){let n=this.getElement("tests").querySelector(`[data-test-id="${t}"]`);if(n==null){this.#i(`Unable to find test element for test: ${t}`);return}n.toggleAttribute("success",!1),n.classList.remove("success","fail"),n.part.remove("success","fail")}let e=this.getElement("before-all-details");e.toggleAttribute("success",!1),e.classList.remove("success","fail"),e.part.remove("success","fail");let r=this.getElement("after-all-details");r.toggleAttribute("success",!1),r.classList.remove("success","fail"),r.part.remove("success","fail")}async#u(e,r,t=!0){let s=this.getElement("tests").querySelector(`[data-test-id="${e}"]`);if(s==null){this.#i(`Unable to find test element for test: ${e}`);return}s.toggleAttribute("success",!1),s.classList.add("running"),s.part.add("running"),s.classList.remove("success","fail"),s.part.remove("success","fail");let n=s.querySelector(".result-icon");n?.classList.remove("success","fail"),n?.part.remove("success","fail"),n?.classList.add("running"),n?.part.add("running");let l=s.querySelector(".error-message");l!=null&&(l.textContent="");let i=s.querySelector("details");i!=null&&(i.open=!1);let o=v,a,p=v,u;try{let c=this.dispatchEvent(new CustomEvent("beforetest",{bubbles:!0,cancelable:!0,composed:!0,detail:{testElement:s}}));if(t==!0){let h=this.#e.requiredbeforeany;if(h!=null){let m;try{let d=this.getElement("required-before-any-details");if(d.classList.add("running"),d.part.add("running"),this.isCanceled==!0)throw new Error("Test has been cancelled");m=await h(this,d),this.#t(m,!0,"before",!0),d.part.remove("running"),d.classList.remove("running")}catch(d){this.#t(m,!0,"before",!0,d),console.error(d),this.#r=!1;return}}}if(this.#r==!1)throw new Error("Tests have been disabled from continuing to run.");if(c==!1||this.isCanceled==!0)throw new Error("Test has been cancelled");let g=this.#e.beforeeach;if(g!=null&&(o=await g(this,s)),this.isCanceled==!0)throw new Error("Test has been cancelled");if(a=await r(this,s),this.isCanceled==!0)throw new Error("Test has been cancelled");let b=this.#e.aftereach;if(b!=null&&(p=await b(this,s)),t==!0){let h=this.#e.requiredafterany;if(h!=null){let m;try{let d=this.getElement("required-before-any-details");if(d.classList.add("running"),d.part.add("running"),this.isCanceled==!0)throw new Error("Test has been cancelled");m=await h(this,d),this.#t(m,!0,"after",!0),d.part.remove("running"),d.classList.remove("running")}catch(d){this.#t(m,!0,"after",!0,d),console.error(d),this.#r=!1;return}}}u="before",o!=v&&this.#a(s,o,!0,void 0,u),u=void 0,this.#a(s,a,!0,void 0,u),u="after",p!=v&&this.#a(s,p,!0,void 0,u)}catch(c){this.#a(s,a,!1,c,u),console.error(c),this.#r=!1}finally{s?.classList.remove("running"),s?.part.remove("running"),n?.classList.remove("running"),n?.part.remove("running"),this.dispatchEvent(new CustomEvent("aftertest",{bubbles:!0,cancelable:!0,composed:!0,detail:{testElement:s}}))}}#a(e,r,t,s,n){if(r instanceof HTMLElement)this.#o(e,r,t,n);else if(r==null){let i=n==null?"Passed":"Hook Ran Successfully",o=this.#n(t==!0?`${i}`:`Failed${s!=null?`:
|
|
467
467
|
${s.message}`:""}`,t,n);this.#o(e,o,t,n)}else if(typeof r=="string"){let i=this.#n(`${r}${s==null?"":`:
|
|
468
468
|
${s.message}`}`,t,n);this.#o(e,i,t,n)}else if(typeof r=="object"){let i=r;if(i.success!=null&&i.expected!=null&&i.value!=null){let o=n==null?"Passed":"Success",a=n==null?"Failed":"Fail",p=this.#n(`${i.success==!0?`${o}:`:`${a}:`}
|
|
469
469
|
Expected:${i.expected}
|
|
@@ -472,4 +472,4 @@ ${n.message}`:""}`,r),this.#l(i,r,t,s);else if(typeof e=="string")i=this.#n(`${e
|
|
|
472
472
|
${n.message}`}`,r),this.#l(i,r,t,s);else if(typeof e=="object"){let o=e;o.success!=null&&o.expected!=null&&o.value!=null&&(i=this.#n(`${o.success==!0?"Success:":"Fail:"}
|
|
473
473
|
Expected:${o.expected}
|
|
474
474
|
Result:${o.value}`,o.success),this.#l(i,r,t,s))}}let l=this.getElement(`${t}-all-details`);l!=null&&(l.open=!0)}static create(e){return document.createElement("code-tests")}#s=new Map;#m(e,r){let t=D();this.#s.set(t,r);let s=this.#g(t,e);return this.getElement("tests").append(s),t}#g(e,r){let t=document.createElement("li");t.dataset.testId=e,t.classList.add("test"),t.part.add("test");let s=document.createElement("details");s.classList.add("test-details"),s.part.add("test-details");let n=document.createElement("summary");n.classList.add("test-summary"),n.part.add("test-summary");let l=document.createElement("div");l.classList.add("result-icon"),l.part.add("result-icon"),n.append(l);let i=document.createElement("span");i.classList.add("description","test-description"),i.textContent=r,n.append(i);let o=document.createElement("button");o.classList.add("run","test-run"),o.part.add("run","test-run"),o.textContent="Run Test",o.title="Run Test",n.append(o);let a=document.createElement("div");a.classList.add("before-result","test-before-result"),a.part.add("before-result","test-before-result");let p=document.createElement("div");p.classList.add("result","test-result"),p.part.add("result","test-result");let u=document.createElement("div");return u.classList.add("after-result","test-after-result"),u.part.add("after-result","test-after-result"),s.append(n),s.append(a),s.append(p),s.append(u),t.append(s),t}#o(e,r,t,s){e.setAttribute("success",t==!0?"true":"false"),e.classList.toggle("success",t),e.part.toggle("success",t),e.classList.toggle("fail",!t),e.part.toggle("fail",!t);let n=e.querySelector(".result-icon");n?.classList.toggle("success",t),n?.part.toggle("success",t),n?.classList.toggle("fail",!t),n?.part.toggle("fail",!t);let l=e.querySelector(`.${s==null?"result":s=="before"?"before-result":"after-result"}`);if(l==null){this.#i("Unable to find result element");return}l.innerHTML="",l.appendChild(r)}#n(e,r,t){let s=document.createElement("code");s.classList.add("code"),s.part.add("code");let n=document.createElement("pre");n.textContent=e;let l=r==!0?"success-message":"error-message";return n.classList.add("pre",l),n.part.add("pre",l),s.appendChild(n),s}#l(e,r,t,s){let n=s==!0?`required-${t}-any`:`${t}-all`,l=this.getElement(`${n}-details`),i=this.getElement(`${n}-results`);l.setAttribute("success",r==!0?"true":"false"),l.classList.toggle("success",r),l.part.toggle("success",r),l.classList.toggle("fail",!r),l.part.toggle("fail",!r),i.innerHTML="",i.appendChild(e)}#i(e,r){r instanceof Error&&(e+=`
|
|
475
|
-
${r.message}`,console.error(r));let t=document.createElement("li");t.classList.add("error","process-error"),t.part.add("error","process-error");let s=document.createElement("code");s.classList.add("code","process-error-code"),s.part.add("code","process-error-code");let n=document.createElement("pre");n.classList.add("pre","process-error-pre"),n.part.add("pre","process-error-pre"),n.textContent=e,s.append(n),t.append(s),this.getElement("tests").append(t)}#p(e){if(e=="ordered"){let r=this.shadowRoot.querySelector("ul");if(r==null)return;let t=this.shadowRoot?.querySelectorAll("li"),s=document.createElement("ol");t!=null&&s.append(...t),s.id="tests",r.replaceWith(s)}else{let r=this.shadowRoot.querySelector("ol");if(r==null)return;let t=this.shadowRoot?.querySelectorAll("li"),s=document.createElement("ul");s.id="tests",t!=null&&s.append(...t),r.replaceWith(s)}}static observedAttributes=["in-order"];attributeChangedCallback(e,r,t){e=="in-order"&&(t==null?this.#p("unordered"):this.#p("ordered"))}};function D(){let f=new Uint8Array(20);crypto.getRandomValues(f);let e=[].slice.apply(f).map(function(t){return String.fromCharCode(t)}).join("");return btoa(e).replace(/\//g,"_").replace(/\+/g,"-").replace(/=/g,"")}customElements.get(C)==null&&customElements.define(C,k);export{F as CodeTestEventType,
|
|
475
|
+
${r.message}`,console.error(r));let t=document.createElement("li");t.classList.add("error","process-error"),t.part.add("error","process-error");let s=document.createElement("code");s.classList.add("code","process-error-code"),s.part.add("code","process-error-code");let n=document.createElement("pre");n.classList.add("pre","process-error-pre"),n.part.add("pre","process-error-pre"),n.textContent=e,s.append(n),t.append(s),this.getElement("tests").append(t)}#p(e){if(e=="ordered"){let r=this.shadowRoot.querySelector("ul");if(r==null)return;let t=this.shadowRoot?.querySelectorAll("li"),s=document.createElement("ol");t!=null&&s.append(...t),s.id="tests",r.replaceWith(s)}else{let r=this.shadowRoot.querySelector("ol");if(r==null)return;let t=this.shadowRoot?.querySelectorAll("li"),s=document.createElement("ul");s.id="tests",t!=null&&s.append(...t),r.replaceWith(s)}}static observedAttributes=["in-order"];attributeChangedCallback(e,r,t){e=="in-order"&&(t==null?this.#p("unordered"):this.#p("ordered"))}};function D(){let f=new Uint8Array(20);crypto.getRandomValues(f);let e=[].slice.apply(f).map(function(t){return String.fromCharCode(t)}).join("");return btoa(e).replace(/\//g,"_").replace(/\+/g,"-").replace(/=/g,"")}customElements.get(C)==null&&customElements.define(C,k);export{F as CodeTestEventType,E as CodeTests,k as CodeTestsElement,P as HookType,S as expect,$ as prompt};
|