@magnit-ce/code-tests 0.0.7 → 0.0.9
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 +28 -14
- package/dist/code-tests.d.cts +2 -1
- package/dist/code-tests.d.ts +2 -1
- package/dist/code-tests.js +28 -14
- package/dist/code-tests.min.js +20 -19
- package/package.json +1 -1
package/dist/code-tests.cjs
CHANGED
|
@@ -124,6 +124,7 @@ var code_tests_default = `:host
|
|
|
124
124
|
--border-process: solid 1px var(--uchu-dark-blue);
|
|
125
125
|
--border-button: solid 1px var(--uchu-blue);
|
|
126
126
|
|
|
127
|
+
--success-icon: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="%232e943a" d="M20.285 2l-11.285 11.567-5.286-5.011-3.714 3.716 9 8.728 15-15.285z"/></svg>');
|
|
127
128
|
--info-icon: url('data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2022.812714%2022.814663%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Asvg%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20style%3D%22fill%3Atransparent%3Bstroke%3Atransparent%3Bstroke-width%3A0.999999%3Bstroke-linejoin%3Around%3Bstroke-miterlimit%3A6.3%3Bstroke-dasharray%3Anone%3Bstroke-dashoffset%3A29.2913%3Bstroke-opacity%3A1%22%20d%3D%22M%2022.295505%2C11.407332%20A%2010.889144%2C10.889144%200%200%201%2011.406424%2C22.296479%2010.889144%2C10.889144%200%200%201%200.51720881%2C11.407332%2010.889144%2C10.889144%200%200%201%2011.406424%2C0.51818382%2010.889144%2C10.889144%200%200%201%2022.295505%2C11.407332%20Z%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22m%2013.945668%2C4.3053761%20c%200.150778%2C-0.96462%20-0.30687%2C-1.43709%20-1.36997%2C-1.43709%20-1.063%2C0%20-1.668452%2C0.47247%20-1.81923%2C1.43709%20-0.150779%2C0.96462%200.306971%2C1.43708%201.369971%2C1.43708%201.004%2C0%201.66845%2C-0.47246%201.819229%2C-1.43708%20z%20M%2011.693889%2C17.829726%2013.373994%2C7.0811161%20h%20-2.9333%20L%208.7605887%2C17.829726%20Z%22%20style%3D%22font-size%3A19.6861px%3Bfont-family%3APassageway%3B-inkscape-font-specification%3APassageway%3Bfill%3A%23a30d30%3Bstroke-width%3A2.5%3Bstroke-linejoin%3Around%3Bstroke-miterlimit%3A6.3%3Bstroke-dashoffset%3A29.2913%22%20aria-label%3D%22i%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E');
|
|
128
129
|
|
|
129
130
|
--font-text: system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
|
|
@@ -241,9 +242,9 @@ summary::before
|
|
|
241
242
|
|
|
242
243
|
.result-icon
|
|
243
244
|
{
|
|
244
|
-
--size: 24px;
|
|
245
|
-
width: var(--size);
|
|
246
|
-
height: var(--size);
|
|
245
|
+
--background-size: 24px;
|
|
246
|
+
width: var(--background-size);
|
|
247
|
+
height: var(--background-size);
|
|
247
248
|
|
|
248
249
|
display: flex;
|
|
249
250
|
align-items: center;
|
|
@@ -287,10 +288,10 @@ summary::before
|
|
|
287
288
|
{
|
|
288
289
|
border: var(--border-success);
|
|
289
290
|
background: var(--surface-success)
|
|
290
|
-
|
|
291
|
+
var(--success-icon);
|
|
291
292
|
background-repeat: no-repeat;
|
|
292
293
|
background-position: center;
|
|
293
|
-
background-size: 16px 16px;
|
|
294
|
+
background-size: var(--icon-size, 16px) var(--icon-size, 16px);
|
|
294
295
|
}
|
|
295
296
|
.test.fail .result-icon
|
|
296
297
|
,.hook.fail .result-icon
|
|
@@ -311,13 +312,13 @@ summary::before
|
|
|
311
312
|
,.hook:is(.running) .result-icon::before
|
|
312
313
|
{
|
|
313
314
|
content: '';
|
|
314
|
-
--size: 18px;
|
|
315
|
+
--icon-size: 18px;
|
|
315
316
|
--color: var(--text-process);
|
|
316
317
|
--animation-timing-function: linear;
|
|
317
318
|
--animation-duration: 2s;
|
|
318
|
-
width: var(--size);
|
|
319
|
-
height: var(--size);
|
|
320
|
-
mask-image: radial-gradient(circle at 50% 50%, transparent calc(var(--size) / 3), black calc(var(--size) / 3));
|
|
319
|
+
width: var(--icon-size);
|
|
320
|
+
height: var(--icon-size);
|
|
321
|
+
mask-image: radial-gradient(circle at 50% 50%, transparent calc(var(--icon-size) / 3), black calc(var(--icon-size) / 3));
|
|
321
322
|
background-image: conic-gradient(transparent, transparent 135deg, var(--color));
|
|
322
323
|
border-radius: 50%;
|
|
323
324
|
animation: var(--animation-timing-function) var(--animation-duration) infinite spin;
|
|
@@ -563,6 +564,7 @@ var CodeTestEventType = /* @__PURE__ */ ((CodeTestEventType2) => {
|
|
|
563
564
|
CodeTestEventType2["AfterAll"] = "afterall";
|
|
564
565
|
CodeTestEventType2["BeforeTest"] = "beforetest";
|
|
565
566
|
CodeTestEventType2["AfterTest"] = "aftertest";
|
|
567
|
+
CodeTestEventType2["Cancel"] = "cancel";
|
|
566
568
|
return CodeTestEventType2;
|
|
567
569
|
})(CodeTestEventType || {});
|
|
568
570
|
var NOTESTDEFINED = Symbol("No Test Defined");
|
|
@@ -760,6 +762,7 @@ var CodeTestsElement = class extends HTMLElement {
|
|
|
760
762
|
this.#isCanceled = true;
|
|
761
763
|
this.classList.add("canceled");
|
|
762
764
|
this.part.add("canceled");
|
|
765
|
+
this.dispatchEvent(new CustomEvent("cancel" /* Cancel */, { bubbles: true, composed: true }));
|
|
763
766
|
}
|
|
764
767
|
async runTests() {
|
|
765
768
|
this.dispatchEvent(new CustomEvent("beforeall" /* BeforeAll */, { bubbles: true, composed: true }));
|
|
@@ -769,7 +772,10 @@ var CodeTestsElement = class extends HTMLElement {
|
|
|
769
772
|
this.classList.remove("canceled");
|
|
770
773
|
this.part.remove("canceled");
|
|
771
774
|
this.toggleAttribute("success", false);
|
|
772
|
-
this.findElement("play-button-label")
|
|
775
|
+
const playButtonLabel = this.findElement("play-button-label");
|
|
776
|
+
if (playButtonLabel != null) {
|
|
777
|
+
playButtonLabel.textContent = "Cancel";
|
|
778
|
+
}
|
|
773
779
|
this.#clearTestStatuses();
|
|
774
780
|
const inOrder = this.hasAttribute("in-order");
|
|
775
781
|
const beforeHooks = this.#hooks.get(BEFOREALL);
|
|
@@ -794,7 +800,9 @@ var CodeTestsElement = class extends HTMLElement {
|
|
|
794
800
|
this.#continueRunningTests = false;
|
|
795
801
|
this.classList.remove("running");
|
|
796
802
|
this.part.remove("running");
|
|
797
|
-
|
|
803
|
+
if (playButtonLabel != null) {
|
|
804
|
+
playButtonLabel.textContent = "Run Tests";
|
|
805
|
+
}
|
|
798
806
|
this.dispatchEvent(new CustomEvent("afterall" /* AfterAll */, { bubbles: true, composed: true }));
|
|
799
807
|
return;
|
|
800
808
|
}
|
|
@@ -816,7 +824,9 @@ var CodeTestsElement = class extends HTMLElement {
|
|
|
816
824
|
if (this.#continueRunningTests == false) {
|
|
817
825
|
this.classList.remove("running");
|
|
818
826
|
this.part.remove("running");
|
|
819
|
-
|
|
827
|
+
if (playButtonLabel != null) {
|
|
828
|
+
playButtonLabel.textContent = "Run Tests";
|
|
829
|
+
}
|
|
820
830
|
this.dispatchEvent(new CustomEvent("afterall" /* AfterAll */, { bubbles: true, composed: true }));
|
|
821
831
|
return;
|
|
822
832
|
}
|
|
@@ -842,7 +852,9 @@ var CodeTestsElement = class extends HTMLElement {
|
|
|
842
852
|
this.#continueRunningTests = false;
|
|
843
853
|
this.classList.remove("running");
|
|
844
854
|
this.part.remove("running");
|
|
845
|
-
|
|
855
|
+
if (playButtonLabel != null) {
|
|
856
|
+
playButtonLabel.textContent = "Run Tests";
|
|
857
|
+
}
|
|
846
858
|
this.dispatchEvent(new CustomEvent("afterall" /* AfterAll */, { bubbles: true, composed: true }));
|
|
847
859
|
return;
|
|
848
860
|
}
|
|
@@ -851,7 +863,9 @@ var CodeTestsElement = class extends HTMLElement {
|
|
|
851
863
|
this.setAttribute("success", failedTests.length == 0 ? "true" : "false");
|
|
852
864
|
this.classList.remove("running");
|
|
853
865
|
this.part.remove("running");
|
|
854
|
-
|
|
866
|
+
if (playButtonLabel != null) {
|
|
867
|
+
playButtonLabel.textContent = "Run Tests";
|
|
868
|
+
}
|
|
855
869
|
this.dispatchEvent(new CustomEvent("afterall" /* AfterAll */, { bubbles: true, composed: true }));
|
|
856
870
|
}
|
|
857
871
|
#clearTestStatuses() {
|
package/dist/code-tests.d.cts
CHANGED
|
@@ -31,7 +31,8 @@ declare enum CodeTestEventType {
|
|
|
31
31
|
BeforeAll = "beforeall",
|
|
32
32
|
AfterAll = "afterall",
|
|
33
33
|
BeforeTest = "beforetest",
|
|
34
|
-
AfterTest = "aftertest"
|
|
34
|
+
AfterTest = "aftertest",
|
|
35
|
+
Cancel = "cancel"
|
|
35
36
|
}
|
|
36
37
|
declare class CodeTestsElement extends HTMLElement {
|
|
37
38
|
#private;
|
package/dist/code-tests.d.ts
CHANGED
|
@@ -31,7 +31,8 @@ declare enum CodeTestEventType {
|
|
|
31
31
|
BeforeAll = "beforeall",
|
|
32
32
|
AfterAll = "afterall",
|
|
33
33
|
BeforeTest = "beforetest",
|
|
34
|
-
AfterTest = "aftertest"
|
|
34
|
+
AfterTest = "aftertest",
|
|
35
|
+
Cancel = "cancel"
|
|
35
36
|
}
|
|
36
37
|
declare class CodeTestsElement extends HTMLElement {
|
|
37
38
|
#private;
|
package/dist/code-tests.js
CHANGED
|
@@ -90,6 +90,7 @@ var code_tests_default = `:host
|
|
|
90
90
|
--border-process: solid 1px var(--uchu-dark-blue);
|
|
91
91
|
--border-button: solid 1px var(--uchu-blue);
|
|
92
92
|
|
|
93
|
+
--success-icon: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="%232e943a" d="M20.285 2l-11.285 11.567-5.286-5.011-3.714 3.716 9 8.728 15-15.285z"/></svg>');
|
|
93
94
|
--info-icon: url('data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2022.812714%2022.814663%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Asvg%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20style%3D%22fill%3Atransparent%3Bstroke%3Atransparent%3Bstroke-width%3A0.999999%3Bstroke-linejoin%3Around%3Bstroke-miterlimit%3A6.3%3Bstroke-dasharray%3Anone%3Bstroke-dashoffset%3A29.2913%3Bstroke-opacity%3A1%22%20d%3D%22M%2022.295505%2C11.407332%20A%2010.889144%2C10.889144%200%200%201%2011.406424%2C22.296479%2010.889144%2C10.889144%200%200%201%200.51720881%2C11.407332%2010.889144%2C10.889144%200%200%201%2011.406424%2C0.51818382%2010.889144%2C10.889144%200%200%201%2022.295505%2C11.407332%20Z%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22m%2013.945668%2C4.3053761%20c%200.150778%2C-0.96462%20-0.30687%2C-1.43709%20-1.36997%2C-1.43709%20-1.063%2C0%20-1.668452%2C0.47247%20-1.81923%2C1.43709%20-0.150779%2C0.96462%200.306971%2C1.43708%201.369971%2C1.43708%201.004%2C0%201.66845%2C-0.47246%201.819229%2C-1.43708%20z%20M%2011.693889%2C17.829726%2013.373994%2C7.0811161%20h%20-2.9333%20L%208.7605887%2C17.829726%20Z%22%20style%3D%22font-size%3A19.6861px%3Bfont-family%3APassageway%3B-inkscape-font-specification%3APassageway%3Bfill%3A%23a30d30%3Bstroke-width%3A2.5%3Bstroke-linejoin%3Around%3Bstroke-miterlimit%3A6.3%3Bstroke-dashoffset%3A29.2913%22%20aria-label%3D%22i%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E');
|
|
94
95
|
|
|
95
96
|
--font-text: system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
|
|
@@ -207,9 +208,9 @@ summary::before
|
|
|
207
208
|
|
|
208
209
|
.result-icon
|
|
209
210
|
{
|
|
210
|
-
--size: 24px;
|
|
211
|
-
width: var(--size);
|
|
212
|
-
height: var(--size);
|
|
211
|
+
--background-size: 24px;
|
|
212
|
+
width: var(--background-size);
|
|
213
|
+
height: var(--background-size);
|
|
213
214
|
|
|
214
215
|
display: flex;
|
|
215
216
|
align-items: center;
|
|
@@ -253,10 +254,10 @@ summary::before
|
|
|
253
254
|
{
|
|
254
255
|
border: var(--border-success);
|
|
255
256
|
background: var(--surface-success)
|
|
256
|
-
|
|
257
|
+
var(--success-icon);
|
|
257
258
|
background-repeat: no-repeat;
|
|
258
259
|
background-position: center;
|
|
259
|
-
background-size: 16px 16px;
|
|
260
|
+
background-size: var(--icon-size, 16px) var(--icon-size, 16px);
|
|
260
261
|
}
|
|
261
262
|
.test.fail .result-icon
|
|
262
263
|
,.hook.fail .result-icon
|
|
@@ -277,13 +278,13 @@ summary::before
|
|
|
277
278
|
,.hook:is(.running) .result-icon::before
|
|
278
279
|
{
|
|
279
280
|
content: '';
|
|
280
|
-
--size: 18px;
|
|
281
|
+
--icon-size: 18px;
|
|
281
282
|
--color: var(--text-process);
|
|
282
283
|
--animation-timing-function: linear;
|
|
283
284
|
--animation-duration: 2s;
|
|
284
|
-
width: var(--size);
|
|
285
|
-
height: var(--size);
|
|
286
|
-
mask-image: radial-gradient(circle at 50% 50%, transparent calc(var(--size) / 3), black calc(var(--size) / 3));
|
|
285
|
+
width: var(--icon-size);
|
|
286
|
+
height: var(--icon-size);
|
|
287
|
+
mask-image: radial-gradient(circle at 50% 50%, transparent calc(var(--icon-size) / 3), black calc(var(--icon-size) / 3));
|
|
287
288
|
background-image: conic-gradient(transparent, transparent 135deg, var(--color));
|
|
288
289
|
border-radius: 50%;
|
|
289
290
|
animation: var(--animation-timing-function) var(--animation-duration) infinite spin;
|
|
@@ -529,6 +530,7 @@ var CodeTestEventType = /* @__PURE__ */ ((CodeTestEventType2) => {
|
|
|
529
530
|
CodeTestEventType2["AfterAll"] = "afterall";
|
|
530
531
|
CodeTestEventType2["BeforeTest"] = "beforetest";
|
|
531
532
|
CodeTestEventType2["AfterTest"] = "aftertest";
|
|
533
|
+
CodeTestEventType2["Cancel"] = "cancel";
|
|
532
534
|
return CodeTestEventType2;
|
|
533
535
|
})(CodeTestEventType || {});
|
|
534
536
|
var NOTESTDEFINED = Symbol("No Test Defined");
|
|
@@ -726,6 +728,7 @@ var CodeTestsElement = class extends HTMLElement {
|
|
|
726
728
|
this.#isCanceled = true;
|
|
727
729
|
this.classList.add("canceled");
|
|
728
730
|
this.part.add("canceled");
|
|
731
|
+
this.dispatchEvent(new CustomEvent("cancel" /* Cancel */, { bubbles: true, composed: true }));
|
|
729
732
|
}
|
|
730
733
|
async runTests() {
|
|
731
734
|
this.dispatchEvent(new CustomEvent("beforeall" /* BeforeAll */, { bubbles: true, composed: true }));
|
|
@@ -735,7 +738,10 @@ var CodeTestsElement = class extends HTMLElement {
|
|
|
735
738
|
this.classList.remove("canceled");
|
|
736
739
|
this.part.remove("canceled");
|
|
737
740
|
this.toggleAttribute("success", false);
|
|
738
|
-
this.findElement("play-button-label")
|
|
741
|
+
const playButtonLabel = this.findElement("play-button-label");
|
|
742
|
+
if (playButtonLabel != null) {
|
|
743
|
+
playButtonLabel.textContent = "Cancel";
|
|
744
|
+
}
|
|
739
745
|
this.#clearTestStatuses();
|
|
740
746
|
const inOrder = this.hasAttribute("in-order");
|
|
741
747
|
const beforeHooks = this.#hooks.get(BEFOREALL);
|
|
@@ -760,7 +766,9 @@ var CodeTestsElement = class extends HTMLElement {
|
|
|
760
766
|
this.#continueRunningTests = false;
|
|
761
767
|
this.classList.remove("running");
|
|
762
768
|
this.part.remove("running");
|
|
763
|
-
|
|
769
|
+
if (playButtonLabel != null) {
|
|
770
|
+
playButtonLabel.textContent = "Run Tests";
|
|
771
|
+
}
|
|
764
772
|
this.dispatchEvent(new CustomEvent("afterall" /* AfterAll */, { bubbles: true, composed: true }));
|
|
765
773
|
return;
|
|
766
774
|
}
|
|
@@ -782,7 +790,9 @@ var CodeTestsElement = class extends HTMLElement {
|
|
|
782
790
|
if (this.#continueRunningTests == false) {
|
|
783
791
|
this.classList.remove("running");
|
|
784
792
|
this.part.remove("running");
|
|
785
|
-
|
|
793
|
+
if (playButtonLabel != null) {
|
|
794
|
+
playButtonLabel.textContent = "Run Tests";
|
|
795
|
+
}
|
|
786
796
|
this.dispatchEvent(new CustomEvent("afterall" /* AfterAll */, { bubbles: true, composed: true }));
|
|
787
797
|
return;
|
|
788
798
|
}
|
|
@@ -808,7 +818,9 @@ var CodeTestsElement = class extends HTMLElement {
|
|
|
808
818
|
this.#continueRunningTests = false;
|
|
809
819
|
this.classList.remove("running");
|
|
810
820
|
this.part.remove("running");
|
|
811
|
-
|
|
821
|
+
if (playButtonLabel != null) {
|
|
822
|
+
playButtonLabel.textContent = "Run Tests";
|
|
823
|
+
}
|
|
812
824
|
this.dispatchEvent(new CustomEvent("afterall" /* AfterAll */, { bubbles: true, composed: true }));
|
|
813
825
|
return;
|
|
814
826
|
}
|
|
@@ -817,7 +829,9 @@ var CodeTestsElement = class extends HTMLElement {
|
|
|
817
829
|
this.setAttribute("success", failedTests.length == 0 ? "true" : "false");
|
|
818
830
|
this.classList.remove("running");
|
|
819
831
|
this.part.remove("running");
|
|
820
|
-
|
|
832
|
+
if (playButtonLabel != null) {
|
|
833
|
+
playButtonLabel.textContent = "Run Tests";
|
|
834
|
+
}
|
|
821
835
|
this.dispatchEvent(new CustomEvent("afterall" /* AfterAll */, { bubbles: true, composed: true }));
|
|
822
836
|
}
|
|
823
837
|
#clearTestStatuses() {
|
package/dist/code-tests.min.js
CHANGED
|
@@ -89,6 +89,7 @@ var S=`:host
|
|
|
89
89
|
--border-process: solid 1px var(--uchu-dark-blue);
|
|
90
90
|
--border-button: solid 1px var(--uchu-blue);
|
|
91
91
|
|
|
92
|
+
--success-icon: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="%232e943a" d="M20.285 2l-11.285 11.567-5.286-5.011-3.714 3.716 9 8.728 15-15.285z"/></svg>');
|
|
92
93
|
--info-icon: url('data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2022.812714%2022.814663%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Asvg%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20style%3D%22fill%3Atransparent%3Bstroke%3Atransparent%3Bstroke-width%3A0.999999%3Bstroke-linejoin%3Around%3Bstroke-miterlimit%3A6.3%3Bstroke-dasharray%3Anone%3Bstroke-dashoffset%3A29.2913%3Bstroke-opacity%3A1%22%20d%3D%22M%2022.295505%2C11.407332%20A%2010.889144%2C10.889144%200%200%201%2011.406424%2C22.296479%2010.889144%2C10.889144%200%200%201%200.51720881%2C11.407332%2010.889144%2C10.889144%200%200%201%2011.406424%2C0.51818382%2010.889144%2C10.889144%200%200%201%2022.295505%2C11.407332%20Z%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22m%2013.945668%2C4.3053761%20c%200.150778%2C-0.96462%20-0.30687%2C-1.43709%20-1.36997%2C-1.43709%20-1.063%2C0%20-1.668452%2C0.47247%20-1.81923%2C1.43709%20-0.150779%2C0.96462%200.306971%2C1.43708%201.369971%2C1.43708%201.004%2C0%201.66845%2C-0.47246%201.819229%2C-1.43708%20z%20M%2011.693889%2C17.829726%2013.373994%2C7.0811161%20h%20-2.9333%20L%208.7605887%2C17.829726%20Z%22%20style%3D%22font-size%3A19.6861px%3Bfont-family%3APassageway%3B-inkscape-font-specification%3APassageway%3Bfill%3A%23a30d30%3Bstroke-width%3A2.5%3Bstroke-linejoin%3Around%3Bstroke-miterlimit%3A6.3%3Bstroke-dashoffset%3A29.2913%22%20aria-label%3D%22i%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E');
|
|
93
94
|
|
|
94
95
|
--font-text: system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
|
|
@@ -206,9 +207,9 @@ summary::before
|
|
|
206
207
|
|
|
207
208
|
.result-icon
|
|
208
209
|
{
|
|
209
|
-
--size: 24px;
|
|
210
|
-
width: var(--size);
|
|
211
|
-
height: var(--size);
|
|
210
|
+
--background-size: 24px;
|
|
211
|
+
width: var(--background-size);
|
|
212
|
+
height: var(--background-size);
|
|
212
213
|
|
|
213
214
|
display: flex;
|
|
214
215
|
align-items: center;
|
|
@@ -252,10 +253,10 @@ summary::before
|
|
|
252
253
|
{
|
|
253
254
|
border: var(--border-success);
|
|
254
255
|
background: var(--surface-success)
|
|
255
|
-
|
|
256
|
+
var(--success-icon);
|
|
256
257
|
background-repeat: no-repeat;
|
|
257
258
|
background-position: center;
|
|
258
|
-
background-size: 16px 16px;
|
|
259
|
+
background-size: var(--icon-size, 16px) var(--icon-size, 16px);
|
|
259
260
|
}
|
|
260
261
|
.test.fail .result-icon
|
|
261
262
|
,.hook.fail .result-icon
|
|
@@ -276,13 +277,13 @@ summary::before
|
|
|
276
277
|
,.hook:is(.running) .result-icon::before
|
|
277
278
|
{
|
|
278
279
|
content: '';
|
|
279
|
-
--size: 18px;
|
|
280
|
+
--icon-size: 18px;
|
|
280
281
|
--color: var(--text-process);
|
|
281
282
|
--animation-timing-function: linear;
|
|
282
283
|
--animation-duration: 2s;
|
|
283
|
-
width: var(--size);
|
|
284
|
-
height: var(--size);
|
|
285
|
-
mask-image: radial-gradient(circle at 50% 50%, transparent calc(var(--size) / 3), black calc(var(--size) / 3));
|
|
284
|
+
width: var(--icon-size);
|
|
285
|
+
height: var(--icon-size);
|
|
286
|
+
mask-image: radial-gradient(circle at 50% 50%, transparent calc(var(--icon-size) / 3), black calc(var(--icon-size) / 3));
|
|
286
287
|
background-image: conic-gradient(transparent, transparent 135deg, var(--color));
|
|
287
288
|
border-radius: 50%;
|
|
288
289
|
animation: var(--animation-timing-function) var(--animation-duration) infinite spin;
|
|
@@ -419,13 +420,13 @@ pre
|
|
|
419
420
|
</div>
|
|
420
421
|
</template>`;var T=class extends Promise{async toBeDefined(t){if(await this==null)throw new Error(`${t??"Value"} is undefined`)}async toBe(t,s=!1){let e=await this;if((s==!0?e===t:e==t)==!1)throw new Error(` Value is not equal.
|
|
421
422
|
Expected: ${t}
|
|
422
|
-
Result: ${e}`)}async toContainText(t){let s=await this}async toHaveAttribute(t){let s=await this;if(!(s instanceof HTMLElement))throw new Error("Unable to check for attribute on non-HTMLElement target");if(s.getAttribute(t))throw new Error("Taret does not have attribute")}},v=Symbol("beforeAll"),y=Symbol("beforeEach"),k=Symbol("afterAll"),w=Symbol("afterEach"),L=class d{static timeoutMS=500;static#e;static#h;static expect(t){return new T(async(e,r)=>{if(t instanceof Promise){let n=await t;e(n);return}e(t)})}static expectSync(t){return new T(async(e,r)=>{if(t instanceof Promise){let n=await t;e(n);return}e(t)})}static expectBefore(t){return new T(async(e,r)=>{if(t instanceof Promise){let n=await t;e(n);return}e(t)})}static async prompt(t,s,e,r){return new Promise((n,a)=>{let o=t.findElement("prompt-template"),l=d.createElementFromTemplate(o);l.querySelector(".label").textContent=e;let u=h=>{let f=h.composedPath();if(f.find(i=>i instanceof HTMLButtonElement&&i.classList.contains("accept"))!=null){let i=r?.onAccept?.()??!0;l.removeEventListener("click",u),n(i);return}if(f.find(i=>i instanceof HTMLButtonElement&&i.classList.contains("reject"))!=null){let i=r?.onReject?.()??!1;l.removeEventListener("click",u),n(i);return}};l.addEventListener("click",u),r?.acceptLabel!=null&&(l.querySelector(".accept").textContent=r.acceptLabel),r?.rejectLabel!=null&&(l.querySelector(".reject").textContent=r.rejectLabel);let c=s instanceof HTMLDetailsElement?s:s.querySelector(".test-details");c!=null&&(c.open=!0),s.querySelector(".result")?.append(l)})}static createElementFromTemplate(t,s){let e=t instanceof HTMLTemplateElement?t:document.querySelector(t);if(e==null)throw new Error(`Unable to find template element from selector: ${t}`);let r=e.content.cloneNode(!0).querySelector("*");if(r==null)throw new Error("Unable to find first child of template element");return s?.append(r),r}};function I(d){return L.expect(d)}function U(d,t,s,e){return L.prompt(d,t,s,e)}var $=":not(slot,defs,g,rect,path,circle,ellipse,line,polygon,text,tspan,use,svg image,svg title,desc,template,template *)";function P(d){let t=[...d.querySelectorAll(`${$}[id]`)];for(let e=0;e<t.length;e++)t[e].part.add(t[e].id);let s=[...d.querySelectorAll(`${$}[class]`)];for(let e=0;e<s.length;e++)s[e].part.add(...s[e].classList)}var N=(r=>(r.BeforeAll="beforeall",r.AfterAll="afterall",r.BeforeTest="beforetest",r.AfterTest="aftertest",r))(N||{}),H=Symbol("No Test Defined"),D=new CSSStyleSheet;D.replaceSync(S);var B="code-tests",R=class extends HTMLElement{componentParts=new Map;getElement(t){if(this.componentParts.get(t)==null){let s=this.findElement(t);s!=null&&this.componentParts.set(t,s)}return this.componentParts.get(t)}findElement(t){return this.shadowRoot.getElementById(t)}#e=new Map;#h={[v]:C(),[y]:C(),[w]:C(),[k]:C()};#s=!0;constructor(){super(),this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML=F,this.shadowRoot.adoptedStyleSheets.push(D),this.#u=this.#f.bind(this)}connectedCallback(){if(P(this.shadowRoot),this.addEventListener("click",this.#u),this.getAttribute("auto")=="false")return;let t=this.getAttribute("src")??this.getAttribute("test")??this.getAttribute("tests")??this.getAttribute("run")??this.getAttribute("path");t!=null&&this.loadTests(t)}disconnectedCallback(){this.removeEventListener("click",this.#u)}#u;#f(t){let s=t.composedPath().find(a=>a instanceof HTMLButtonElement&&a.classList.contains("run"));if(s==null)return;let e=s.closest("li");if(e==null){if(s.hasAttribute("data-all")==!0)if(this.classList.contains("running")){if(this.classList.contains("canceled"))return;this.cancel()}else this.runTests();return}let r=e.dataset.testId;if(r==null)return;let n=this.#r.get(r);n!=null&&(this.#t=!1,this.classList.remove("canceled"),this.part.remove("canceled"),this.#d(r,n))}#m(){return this.getAttribute("src")??this.getAttribute("test")??this.getAttribute("tests")??this.getAttribute("run")??this.getAttribute("path")}async loadTests(t){let s=t??this.#m();if(s!=null)try{this.getElement("tests").innerHTML="",this.#r.clear(),this.classList.remove("has-before-hook"),this.classList.remove("has-after-hook");let e=window.location.href.lastIndexOf("/"),n=window.location.href.substring(e).indexOf(".")!=-1==!0?window.location.href.substring(0,e+1):window.location.href,a=n+s.substring(0,s.lastIndexOf("/")+1),o=n+s,l=await(await fetch(o)).text();l=l.replaceAll(/['"`](((\.\/)|(\.\.\/))+(.*))['"`]/g,`'${a}$1'`);let u=new File([l],s.substring(s.lastIndexOf("/")),{type:"text/javascript"}),h=await import(URL.createObjectURL(u)),f=h.tests??h.default;if(f==null)throw new Error(`Unable to find tests definition in file at path: ${s}`);let E=f[v];if(E!=null){if(this.#e.get(v)==null){let p=new Map;p.set(E,new Set),this.#e.set(v,p)}this.classList.add("has-before-hook")}let b=f[y];if(b!=null&&this.#e.get(y)==null){let p=new Map;p.set(b,new Set),this.#e.set(y,p)}let i=f[k];if(i!=null){if(this.#e.get(k)==null){let p=new Map;p.set(i,new Set),this.#e.set(k,p)}this.classList.add("has-after-hook")}let A=f[w];if(A!=null&&this.#e.get(w)==null){let p=new Map;p.set(A,new Set),this.#e.set(w,p)}for(let[x,p]of Object.entries(f)){let M=this.#b(x,p);if(E!=null){let m=this.#e.get(v);if(m!=null){let g=m.get(E);g?.add(M)}}if(b!=null){let m=this.#e.get(y);if(m!=null){let g=m.get(b);g?.add(M)}}if(i!=null){let m=this.#e.get(k);if(m!=null){let g=m.get(i);g?.add(M)}}if(A!=null){let m=this.#e.get(w);if(m!=null){let g=m.get(A);g?.add(M)}}}}catch(e){this.#c("An error occurred while loading the tasks:",e)}}#t=!1;cancel(){this.#t=!0,this.classList.add("canceled"),this.part.add("canceled")}async runTests(){this.dispatchEvent(new CustomEvent("beforeall",{bubbles:!0,composed:!0})),this.#s=!0,this.classList.add("running"),this.#t=!1,this.classList.remove("canceled"),this.part.remove("canceled"),this.toggleAttribute("success",!1),this.findElement("play-button-label").textContent="Cancel",this.#g();let t=this.hasAttribute("in-order"),s=this.#e.get(v);if(s!=null){let n;try{let a=this.getElement("before-all-details");a.classList.add("running"),a.part.add("running");for(let[o,l]of s){if(this.#t==!0)throw new Error("Test has been cancelled");n=await o(this,a),this.#o(n,!0,"before")}a.part.remove("running"),a.classList.remove("running")}catch(a){this.#o(n,!1,"before",a),console.error(a),this.#s=!1,this.classList.remove("running"),this.part.remove("running"),this.findElement("play-button-label").textContent="Run Tests",this.dispatchEvent(new CustomEvent("afterall",{bubbles:!0,composed:!0}));return}}if(t==!1){let n=[];for(let[a,o]of this.#r)n.push(this.#d(a,o));await Promise.all(n)}else for(let[n,a]of this.#r){if(this.#s==!1)break;await this.#d(n,a)}if(this.#s==!1){this.classList.remove("running"),this.part.remove("running"),this.findElement("play-button-label").textContent="Run Tests",this.dispatchEvent(new CustomEvent("afterall",{bubbles:!0,composed:!0}));return}let e=this.#e.get(k);if(e!=null){let n;try{let a=this.getElement("after-all-details");a.classList.add("running"),a.part.add("running");for(let[o,l]of e){if(this.#t==!0)throw new Error("Test has been cancelled");n=await o(this,a),this.#o(n,!0,"after")}a.part.remove("running"),a.classList.remove("running")}catch(a){this.#o(n,!1,"after",a),console.error(a),this.#s=!1,this.classList.remove("running"),this.part.remove("running"),this.findElement("play-button-label").textContent="Run Tests",this.dispatchEvent(new CustomEvent("afterall",{bubbles:!0,composed:!0}));return}}let r=this.shadowRoot.querySelectorAll('[success="false"]');this.setAttribute("success",r.length==0?"true":"false"),this.classList.remove("running"),this.part.remove("running"),this.findElement("play-button-label").textContent="Run Tests",this.dispatchEvent(new CustomEvent("afterall",{bubbles:!0,composed:!0}))}#g(){for(let[e,r]of this.#r){let n=this.getElement("tests").querySelector(`[data-test-id="${e}"]`);if(n==null){this.#c(`Unable to find test element for test: ${e}`);return}n.toggleAttribute("success",!1),n.classList.remove("success","fail"),n.part.remove("success","fail")}let t=this.getElement("before-all-details");t.toggleAttribute("success",!1),t.classList.remove("success","fail"),t.part.remove("success","fail");let s=this.getElement("after-all-details");s.toggleAttribute("success",!1),s.classList.remove("success","fail"),s.part.remove("success","fail")}async#d(t,s){let e=this.getElement("tests").querySelector(`[data-test-id="${t}"]`);if(e==null){this.#c(`Unable to find test element for test: ${t}`);return}e.toggleAttribute("success",!1),e.classList.add("running"),e.part.add("running"),e.classList.remove("success","fail"),e.part.remove("success","fail");let r=e.querySelector(".result-icon");r?.classList.remove("success","fail"),r?.part.remove("success","fail"),r?.classList.add("running"),r?.part.add("running");let n=e.querySelector(".error-message");n!=null&&(n.textContent="");let a=e.querySelector("details");a!=null&&(a.open=!1);let o=H,l,u=H,c;try{if(this.dispatchEvent(new CustomEvent("beforetest",{bubbles:!0,cancelable:!0,composed:!0,detail:{testElement:e}}))==!1||this.#t==!0)throw new Error("Test has been cancelled");let f=this.#e.get(y);if(f!=null){for(let[b,i]of f)if(i.has(t)){o=await b(this,e);break}}if(this.#t==!0)throw new Error("Test has been cancelled");if(l=await s(this,e),this.#t==!0)throw new Error("Test has been cancelled");let E=this.#e.get(w);if(E!=null){for(let[b,i]of E)if(i.has(t)){u=await b(this,e);break}}c="before",o!=H&&this.#a(e,o,!0,void 0,c),c=void 0,this.#a(e,l,!0,void 0,c),c="after",u!=H&&this.#a(e,u,!0,void 0,c)}catch(h){this.#a(e,l,!1,h,c),console.error(h),this.#s=!1}finally{e?.classList.remove("running"),e?.part.remove("running"),r?.classList.remove("running"),r?.part.remove("running"),this.dispatchEvent(new CustomEvent("aftertest",{bubbles:!0,cancelable:!0,composed:!0,detail:{testElement:e}}))}}#a(t,s,e,r,n){if(s instanceof HTMLElement)this.#l(t,s,e,n);else if(s==null){let o=n==null?"Passed":"Hook Ran Successfully",l=this.#n(e==!0?`${o}`:`Failed${r!=null?`:
|
|
423
|
-
${r.message}`:""}`,e,n);this.#l(t,l,e,n)}else if(typeof s=="string"){let
|
|
424
|
-
${r.message}`}`,e,n);this.#l(t,
|
|
425
|
-
Expected:${
|
|
426
|
-
Result:${
|
|
427
|
-
${r.message}`:""}`,s),this.#i(
|
|
428
|
-
${r.message}`}`,s),this.#i(
|
|
429
|
-
Expected:${
|
|
430
|
-
Result:${
|
|
431
|
-
${s.message}`,console.error(s));let e=document.createElement("li");e.classList.add("error","process-error"),e.part.add("error","process-error");let r=document.createElement("code");r.classList.add("code","process-error-code"),r.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=t,r.append(n),e.append(r),this.getElement("tests").append(e)}#p(t){if(t=="ordered"){let s=this.shadowRoot.querySelector("ul");if(s==null)return;let e=this.shadowRoot?.querySelectorAll("li"),r=document.createElement("ol");e!=null&&r.append(...e),r.id="tests",s.replaceWith(r)}else{let s=this.shadowRoot.querySelector("ol");if(s==null)return;let e=this.shadowRoot?.querySelectorAll("li"),r=document.createElement("ul");r.id="tests",e!=null&&r.append(...e),s.replaceWith(r)}}static observedAttributes=["in-order"];attributeChangedCallback(t,s,e){t=="in-order"&&(e==null?this.#p("unordered"):this.#p("ordered"))}};function C(){let d=new Uint8Array(20);crypto.getRandomValues(d);let t=[].slice.apply(d).map(function(e){return String.fromCharCode(e)}).join("");return btoa(t).replace(/\//g,"_").replace(/\+/g,"-").replace(/=/g,"")}customElements.get(B)==null&&customElements.define(B,R);export{k as AFTERALL,w as AFTEREACH,v as BEFOREALL,y as BEFOREEACH,
|
|
423
|
+
Result: ${e}`)}async toContainText(t){let s=await this}async toHaveAttribute(t){let s=await this;if(!(s instanceof HTMLElement))throw new Error("Unable to check for attribute on non-HTMLElement target");if(s.getAttribute(t))throw new Error("Taret does not have attribute")}},v=Symbol("beforeAll"),y=Symbol("beforeEach"),k=Symbol("afterAll"),w=Symbol("afterEach"),L=class d{static timeoutMS=500;static#e;static#h;static expect(t){return new T(async(e,r)=>{if(t instanceof Promise){let n=await t;e(n);return}e(t)})}static expectSync(t){return new T(async(e,r)=>{if(t instanceof Promise){let n=await t;e(n);return}e(t)})}static expectBefore(t){return new T(async(e,r)=>{if(t instanceof Promise){let n=await t;e(n);return}e(t)})}static async prompt(t,s,e,r){return new Promise((n,o)=>{let a=t.findElement("prompt-template"),l=d.createElementFromTemplate(a);l.querySelector(".label").textContent=e;let c=h=>{let f=h.composedPath();if(f.find(i=>i instanceof HTMLButtonElement&&i.classList.contains("accept"))!=null){let i=r?.onAccept?.()??!0;l.removeEventListener("click",c),n(i);return}if(f.find(i=>i instanceof HTMLButtonElement&&i.classList.contains("reject"))!=null){let i=r?.onReject?.()??!1;l.removeEventListener("click",c),n(i);return}};l.addEventListener("click",c),r?.acceptLabel!=null&&(l.querySelector(".accept").textContent=r.acceptLabel),r?.rejectLabel!=null&&(l.querySelector(".reject").textContent=r.rejectLabel);let u=s instanceof HTMLDetailsElement?s:s.querySelector(".test-details");u!=null&&(u.open=!0),s.querySelector(".result")?.append(l)})}static createElementFromTemplate(t,s){let e=t instanceof HTMLTemplateElement?t:document.querySelector(t);if(e==null)throw new Error(`Unable to find template element from selector: ${t}`);let r=e.content.cloneNode(!0).querySelector("*");if(r==null)throw new Error("Unable to find first child of template element");return s?.append(r),r}};function I(d){return L.expect(d)}function z(d,t,s,e){return L.prompt(d,t,s,e)}var $=":not(slot,defs,g,rect,path,circle,ellipse,line,polygon,text,tspan,use,svg image,svg title,desc,template,template *)";function P(d){let t=[...d.querySelectorAll(`${$}[id]`)];for(let e=0;e<t.length;e++)t[e].part.add(t[e].id);let s=[...d.querySelectorAll(`${$}[class]`)];for(let e=0;e<s.length;e++)s[e].part.add(...s[e].classList)}var U=(n=>(n.BeforeAll="beforeall",n.AfterAll="afterall",n.BeforeTest="beforetest",n.AfterTest="aftertest",n.Cancel="cancel",n))(U||{}),H=Symbol("No Test Defined"),D=new CSSStyleSheet;D.replaceSync(S);var B="code-tests",R=class extends HTMLElement{componentParts=new Map;getElement(t){if(this.componentParts.get(t)==null){let s=this.findElement(t);s!=null&&this.componentParts.set(t,s)}return this.componentParts.get(t)}findElement(t){return this.shadowRoot.getElementById(t)}#e=new Map;#h={[v]:C(),[y]:C(),[w]:C(),[k]:C()};#s=!0;constructor(){super(),this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML=F,this.shadowRoot.adoptedStyleSheets.push(D),this.#u=this.#f.bind(this)}connectedCallback(){if(P(this.shadowRoot),this.addEventListener("click",this.#u),this.getAttribute("auto")=="false")return;let t=this.getAttribute("src")??this.getAttribute("test")??this.getAttribute("tests")??this.getAttribute("run")??this.getAttribute("path");t!=null&&this.loadTests(t)}disconnectedCallback(){this.removeEventListener("click",this.#u)}#u;#f(t){let s=t.composedPath().find(o=>o instanceof HTMLButtonElement&&o.classList.contains("run"));if(s==null)return;let e=s.closest("li");if(e==null){if(s.hasAttribute("data-all")==!0)if(this.classList.contains("running")){if(this.classList.contains("canceled"))return;this.cancel()}else this.runTests();return}let r=e.dataset.testId;if(r==null)return;let n=this.#r.get(r);n!=null&&(this.#t=!1,this.classList.remove("canceled"),this.part.remove("canceled"),this.#d(r,n))}#m(){return this.getAttribute("src")??this.getAttribute("test")??this.getAttribute("tests")??this.getAttribute("run")??this.getAttribute("path")}async loadTests(t){let s=t??this.#m();if(s!=null)try{this.getElement("tests").innerHTML="",this.#r.clear(),this.classList.remove("has-before-hook"),this.classList.remove("has-after-hook");let e=window.location.href.lastIndexOf("/"),n=window.location.href.substring(e).indexOf(".")!=-1==!0?window.location.href.substring(0,e+1):window.location.href,o=n+s.substring(0,s.lastIndexOf("/")+1),a=n+s,l=await(await fetch(a)).text();l=l.replaceAll(/['"`](((\.\/)|(\.\.\/))+(.*))['"`]/g,`'${o}$1'`);let c=new File([l],s.substring(s.lastIndexOf("/")),{type:"text/javascript"}),h=await import(URL.createObjectURL(c)),f=h.tests??h.default;if(f==null)throw new Error(`Unable to find tests definition in file at path: ${s}`);let E=f[v];if(E!=null){if(this.#e.get(v)==null){let p=new Map;p.set(E,new Set),this.#e.set(v,p)}this.classList.add("has-before-hook")}let b=f[y];if(b!=null&&this.#e.get(y)==null){let p=new Map;p.set(b,new Set),this.#e.set(y,p)}let i=f[k];if(i!=null){if(this.#e.get(k)==null){let p=new Map;p.set(i,new Set),this.#e.set(k,p)}this.classList.add("has-after-hook")}let A=f[w];if(A!=null&&this.#e.get(w)==null){let p=new Map;p.set(A,new Set),this.#e.set(w,p)}for(let[x,p]of Object.entries(f)){let M=this.#b(x,p);if(E!=null){let m=this.#e.get(v);if(m!=null){let g=m.get(E);g?.add(M)}}if(b!=null){let m=this.#e.get(y);if(m!=null){let g=m.get(b);g?.add(M)}}if(i!=null){let m=this.#e.get(k);if(m!=null){let g=m.get(i);g?.add(M)}}if(A!=null){let m=this.#e.get(w);if(m!=null){let g=m.get(A);g?.add(M)}}}}catch(e){this.#c("An error occurred while loading the tasks:",e)}}#t=!1;cancel(){this.#t=!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.#s=!0,this.classList.add("running"),this.#t=!1,this.classList.remove("canceled"),this.part.remove("canceled"),this.toggleAttribute("success",!1);let t=this.findElement("play-button-label");t!=null&&(t.textContent="Cancel"),this.#g();let s=this.hasAttribute("in-order"),e=this.#e.get(v);if(e!=null){let o;try{let a=this.getElement("before-all-details");a.classList.add("running"),a.part.add("running");for(let[l,c]of e){if(this.#t==!0)throw new Error("Test has been cancelled");o=await l(this,a),this.#o(o,!0,"before")}a.part.remove("running"),a.classList.remove("running")}catch(a){this.#o(o,!1,"before",a),console.error(a),this.#s=!1,this.classList.remove("running"),this.part.remove("running"),t!=null&&(t.textContent="Run Tests"),this.dispatchEvent(new CustomEvent("afterall",{bubbles:!0,composed:!0}));return}}if(s==!1){let o=[];for(let[a,l]of this.#r)o.push(this.#d(a,l));await Promise.all(o)}else for(let[o,a]of this.#r){if(this.#s==!1)break;await this.#d(o,a)}if(this.#s==!1){this.classList.remove("running"),this.part.remove("running"),t!=null&&(t.textContent="Run Tests"),this.dispatchEvent(new CustomEvent("afterall",{bubbles:!0,composed:!0}));return}let r=this.#e.get(k);if(r!=null){let o;try{let a=this.getElement("after-all-details");a.classList.add("running"),a.part.add("running");for(let[l,c]of r){if(this.#t==!0)throw new Error("Test has been cancelled");o=await l(this,a),this.#o(o,!0,"after")}a.part.remove("running"),a.classList.remove("running")}catch(a){this.#o(o,!1,"after",a),console.error(a),this.#s=!1,this.classList.remove("running"),this.part.remove("running"),t!=null&&(t.textContent="Run Tests"),this.dispatchEvent(new CustomEvent("afterall",{bubbles:!0,composed:!0}));return}}let n=this.shadowRoot.querySelectorAll('[success="false"]');this.setAttribute("success",n.length==0?"true":"false"),this.classList.remove("running"),this.part.remove("running"),t!=null&&(t.textContent="Run Tests"),this.dispatchEvent(new CustomEvent("afterall",{bubbles:!0,composed:!0}))}#g(){for(let[e,r]of this.#r){let n=this.getElement("tests").querySelector(`[data-test-id="${e}"]`);if(n==null){this.#c(`Unable to find test element for test: ${e}`);return}n.toggleAttribute("success",!1),n.classList.remove("success","fail"),n.part.remove("success","fail")}let t=this.getElement("before-all-details");t.toggleAttribute("success",!1),t.classList.remove("success","fail"),t.part.remove("success","fail");let s=this.getElement("after-all-details");s.toggleAttribute("success",!1),s.classList.remove("success","fail"),s.part.remove("success","fail")}async#d(t,s){let e=this.getElement("tests").querySelector(`[data-test-id="${t}"]`);if(e==null){this.#c(`Unable to find test element for test: ${t}`);return}e.toggleAttribute("success",!1),e.classList.add("running"),e.part.add("running"),e.classList.remove("success","fail"),e.part.remove("success","fail");let r=e.querySelector(".result-icon");r?.classList.remove("success","fail"),r?.part.remove("success","fail"),r?.classList.add("running"),r?.part.add("running");let n=e.querySelector(".error-message");n!=null&&(n.textContent="");let o=e.querySelector("details");o!=null&&(o.open=!1);let a=H,l,c=H,u;try{if(this.dispatchEvent(new CustomEvent("beforetest",{bubbles:!0,cancelable:!0,composed:!0,detail:{testElement:e}}))==!1||this.#t==!0)throw new Error("Test has been cancelled");let f=this.#e.get(y);if(f!=null){for(let[b,i]of f)if(i.has(t)){a=await b(this,e);break}}if(this.#t==!0)throw new Error("Test has been cancelled");if(l=await s(this,e),this.#t==!0)throw new Error("Test has been cancelled");let E=this.#e.get(w);if(E!=null){for(let[b,i]of E)if(i.has(t)){c=await b(this,e);break}}u="before",a!=H&&this.#a(e,a,!0,void 0,u),u=void 0,this.#a(e,l,!0,void 0,u),u="after",c!=H&&this.#a(e,c,!0,void 0,u)}catch(h){this.#a(e,l,!1,h,u),console.error(h),this.#s=!1}finally{e?.classList.remove("running"),e?.part.remove("running"),r?.classList.remove("running"),r?.part.remove("running"),this.dispatchEvent(new CustomEvent("aftertest",{bubbles:!0,cancelable:!0,composed:!0,detail:{testElement:e}}))}}#a(t,s,e,r,n){if(s instanceof HTMLElement)this.#l(t,s,e,n);else if(s==null){let a=n==null?"Passed":"Hook Ran Successfully",l=this.#n(e==!0?`${a}`:`Failed${r!=null?`:
|
|
424
|
+
${r.message}`:""}`,e,n);this.#l(t,l,e,n)}else if(typeof s=="string"){let a=this.#n(`${s}${r==null?"":`:
|
|
425
|
+
${r.message}`}`,e,n);this.#l(t,a,e,n)}else if(typeof s=="object"){let a=s;if(a.success!=null&&a.expected!=null&&a.value!=null){let l=n==null?"Passed":"Success",c=n==null?"Failed":"Fail",u=this.#n(`${a.success==!0?`${l}:`:`${c}:`}
|
|
426
|
+
Expected:${a.expected}
|
|
427
|
+
Result:${a.value}`,a.success,n);this.#l(t,u,e,n)}}let o=t.querySelector("details");o!=null&&(o.open=!0)}#o(t,s,e,r){if(t instanceof HTMLElement)this.#i(t,s,e);else{let o;if(t==null)o=this.#n(s==!0?"Hook Ran Successfully":`Failed${r!=null?`:
|
|
428
|
+
${r.message}`:""}`,s),this.#i(o,s,e);else if(typeof t=="string")o=this.#n(`${t}${r==null?"":`:
|
|
429
|
+
${r.message}`}`,s),this.#i(o,s,e);else if(typeof t=="object"){let a=t;a.success!=null&&a.expected!=null&&a.value!=null&&(o=this.#n(`${a.success==!0?"Success:":"Fail:"}
|
|
430
|
+
Expected:${a.expected}
|
|
431
|
+
Result:${a.value}`,a.success),this.#i(o,s,e))}}let n=this.getElement(`${e}-all-details`);n!=null&&(n.open=!0)}static create(t){return document.createElement("code-tests")}#r=new Map;#b(t,s){let e=C();this.#r.set(e,s);let r=this.#E(e,t);return this.getElement("tests").append(r),e}#E(t,s){let e=document.createElement("li");e.dataset.testId=t,e.classList.add("test"),e.part.add("test");let r=document.createElement("details");r.classList.add("test-details"),r.part.add("test-details");let n=document.createElement("summary");n.classList.add("test-summary"),n.part.add("test-summary");let o=document.createElement("div");o.classList.add("result-icon"),o.part.add("result-icon"),n.append(o);let a=document.createElement("span");a.classList.add("description","test-description"),a.textContent=s,n.append(a);let l=document.createElement("button");l.classList.add("run","test-run"),l.part.add("run","test-run"),l.textContent="Run Test",l.title="Run Test",n.append(l);let c=document.createElement("div");c.classList.add("before-result","test-before-result"),c.part.add("before-result","test-before-result");let u=document.createElement("div");u.classList.add("result","test-result"),u.part.add("result","test-result");let h=document.createElement("div");return h.classList.add("after-result","test-after-result"),h.part.add("after-result","test-after-result"),r.append(n),r.append(c),r.append(u),r.append(h),e.append(r),e}#l(t,s,e,r){t.setAttribute("success",e==!0?"true":"false"),t.classList.toggle("success",e),t.part.toggle("success",e),t.classList.toggle("fail",!e),t.part.toggle("fail",!e);let n=t.querySelector(".result-icon");n?.classList.toggle("success",e),n?.part.toggle("success",e),n?.classList.toggle("fail",!e),n?.part.toggle("fail",!e);let o=t.querySelector(`.${r==null?"result":r=="before"?"before-result":"after-result"}`);if(o==null){this.#c("Unable to find result element");return}o.innerHTML="",o.appendChild(s)}#n(t,s,e){let r=document.createElement("code");r.classList.add("code"),r.part.add("code");let n=document.createElement("pre");n.textContent=t;let o=s==!0?"success-message":"error-message";return n.classList.add("pre",o),n.part.add("pre",o),r.appendChild(n),r}#i(t,s,e){let r=this.getElement(`${e}-all-details`),n=this.getElement(`${e}-all-results`);r.setAttribute("success",s==!0?"true":"false"),r.classList.toggle("success",s),r.part.toggle("success",s),r.classList.toggle("fail",!s),r.part.toggle("fail",!s),n.innerHTML="",n.appendChild(t)}#c(t,s){s instanceof Error&&(t+=`
|
|
432
|
+
${s.message}`,console.error(s));let e=document.createElement("li");e.classList.add("error","process-error"),e.part.add("error","process-error");let r=document.createElement("code");r.classList.add("code","process-error-code"),r.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=t,r.append(n),e.append(r),this.getElement("tests").append(e)}#p(t){if(t=="ordered"){let s=this.shadowRoot.querySelector("ul");if(s==null)return;let e=this.shadowRoot?.querySelectorAll("li"),r=document.createElement("ol");e!=null&&r.append(...e),r.id="tests",s.replaceWith(r)}else{let s=this.shadowRoot.querySelector("ol");if(s==null)return;let e=this.shadowRoot?.querySelectorAll("li"),r=document.createElement("ul");r.id="tests",e!=null&&r.append(...e),s.replaceWith(r)}}static observedAttributes=["in-order"];attributeChangedCallback(t,s,e){t=="in-order"&&(e==null?this.#p("unordered"):this.#p("ordered"))}};function C(){let d=new Uint8Array(20);crypto.getRandomValues(d);let t=[].slice.apply(d).map(function(e){return String.fromCharCode(e)}).join("");return btoa(t).replace(/\//g,"_").replace(/\+/g,"-").replace(/=/g,"")}customElements.get(B)==null&&customElements.define(B,R);export{k as AFTERALL,w as AFTEREACH,v as BEFOREALL,y as BEFOREEACH,U as CodeTestEventType,L as CodeTests,R as CodeTestsElement,I as expect,z as prompt};
|