@layers-app/editor 0.7.48 → 0.7.49
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/README.md +4 -14
- package/dist/index.cjs +2 -2
- package/dist/index.d.ts +17 -11
- package/dist/index.js +2 -2
- package/dist/{layers.DiHUvl0o.js → layers.2sxk2h9p.js} +1 -1
- package/dist/{layers.DEjh8HqA.js → layers.3fhqDXGQ.js} +1 -1
- package/dist/{layers.yZYCg_En.js → layers.6LJL3iMX.js} +1 -1
- package/dist/{layers.BsoRVzDP.js → layers.6lVF0vjp.js} +2 -2
- package/dist/{layers.B9vco1Tm.js → layers.6vQhCrMO.js} +1 -1
- package/dist/{layers.BEXIxuBF.js → layers.8jPh7nZ7.js} +1 -1
- package/dist/{layers.Dpw_9ymJ.js → layers.9YYn67yF.js} +1 -1
- package/dist/{layers.C4DDZaZs.js → layers.9o0Jdg-U.js} +1 -1
- package/dist/{layers.CGoSj1av.js → layers.B0L7owR9.js} +5 -5
- package/dist/{layers.DOq-L3gG.js → layers.B124trWB.js} +1 -1
- package/dist/{layers.Ctocb96g.js → layers.B4bJKqOt.js} +1 -1
- package/dist/{layers.DBmtL6ZZ.js → layers.B50R5EaK.js} +1 -1
- package/dist/{layers.rUzSMgAT.js → layers.B74E_Mhu.js} +1 -1
- package/dist/{layers.CmF7I89w.js → layers.B7c71bAt.js} +1 -1
- package/dist/{layers.LiJvf-Xh.js → layers.B96L1hG2.js} +1 -1
- package/dist/{layers.CX1TPIiJ.js → layers.B9Rx2foX.js} +4 -4
- package/dist/{layers._beiaL7T.js → layers.BB461pvX.js} +1 -1
- package/dist/{layers.BdBmAIrs.js → layers.BBix4GLX.js} +2 -2
- package/dist/{layers.BvhD2Hex.js → layers.BKyEhTMV.js} +1 -1
- package/dist/{layers.BE1X7OZN.js → layers.BLUQsSE-.js} +1 -1
- package/dist/{layers.Cl2CJFNx.js → layers.BNuBcDIb.js} +1 -1
- package/dist/{layers.B3ebXuRR.js → layers.BPHAY1-9.js} +4 -4
- package/dist/{layers.OxWb2lcf.js → layers.BQ2I5acy.js} +1 -1
- package/dist/{layers.Bl4j3Wpr.js → layers.BRWyWzwh.js} +1 -1
- package/dist/{layers.9Ei77wJG.js → layers.BS6VvqxC.js} +1 -1
- package/dist/{layers.ClLKdjmI.js → layers.BTbPm8pR.js} +1 -1
- package/dist/{layers.CMiTJnad.js → layers.BV-egvVp.js} +1 -1
- package/dist/{layers.DIa1shbs.js → layers.BVr10oU3.js} +1 -1
- package/dist/{layers.C_poBEYa.js → layers.BWw1mK7X.js} +1 -1
- package/dist/{layers.CH7sIJoO.js → layers.BXIUEFQw.js} +1 -1
- package/dist/{layers.BDlIrLZ6.js → layers.BXS2uNb0.js} +1 -1
- package/dist/{layers.CJFGEsgQ.js → layers.BaGJS1l7.js} +1 -1
- package/dist/{layers.BtPwy6-y.js → layers.Bc8eVF2x.js} +1 -1
- package/dist/{layers.BAdbzzKU.js → layers.BdYtCOnE.js} +1 -1
- package/dist/{layers.C-9tvKsH.js → layers.Be6CBZHC.js} +1 -1
- package/dist/{layers.CFKLwcKm.js → layers.BeKf3u57.js} +1 -1
- package/dist/{layers.Cu_3bkpd.js → layers.BgQO_ULY.js} +1 -1
- package/dist/{layers.DqkMTScX.js → layers.BhDueLVc.js} +1 -1
- package/dist/{layers.CW3RPoeB.js → layers.BhDyoOpp.js} +1 -1
- package/dist/{layers.DhkSgCGH.js → layers.BiakMAVz.js} +1 -1
- package/dist/{layers.CFs5s8T3.js → layers.Bpw9JnCv.js} +1 -1
- package/dist/{layers.CU6rRFWz.js → layers.Bq2f36dx.js} +1 -1
- package/dist/{layers.Bp180gHt.js → layers.BsA7eoz8.js} +1 -1
- package/dist/{layers.E-_P3Hgt.js → layers.BsxmtGhi.js} +1 -1
- package/dist/{layers.CRxZsox1.js → layers.BszXwlqm.js} +1 -1
- package/dist/{layers.C_H8CF1f.js → layers.Bt2v9ZR3.js} +1 -1
- package/dist/{layers.CPkIaDFg.js → layers.BtKGefaP.js} +1 -1
- package/dist/{layers.-XXFcZ-Q.js → layers.BtLFUN9L.js} +1 -1
- package/dist/{layers.CNfAcY6Y.js → layers.BtTn3DWi.js} +1 -1
- package/dist/{layers.DSMzl4c7.js → layers.BtWDGtLj.js} +1 -1
- package/dist/{layers.BOm3l9Y2.js → layers.Bw7qkQsX.js} +1 -1
- package/dist/{layers.BE5c8LWk.js → layers.BwxPrRZD.js} +1 -1
- package/dist/{layers.C239vlHa.js → layers.Bxcxrsy_.js} +3 -3
- package/dist/{layers.sHJHq9SR.js → layers.C-XVPziT.js} +1 -1
- package/dist/{layers.DHWPE8JP.js → layers.C3E0dLDD.js} +1 -1
- package/dist/{layers.BGNKNfpx.js → layers.C3ctqQ_d.js} +4 -4
- package/dist/{layers.CzBOl45X.js → layers.C57RR3BP.js} +1 -1
- package/dist/{layers.DwKuuHvW.js → layers.C5TvEQpd.js} +1 -1
- package/dist/{layers.DvEpZu0k.js → layers.C5XJmJhy.js} +5 -5
- package/dist/{layers.48nWXuMb.js → layers.C5XRUPsP.js} +3 -3
- package/dist/{layers.D9Q1WK3D.js → layers.C6lFx_9o.js} +1 -1
- package/dist/{layers.Dsyqs-lC.js → layers.C6vIa6gn.js} +1 -1
- package/dist/{layers.9vsoRdca.js → layers.CAXlMwAW.js} +1 -1
- package/dist/{layers.Ds-YCD3f.js → layers.CBwlQeze.js} +1 -1
- package/dist/{layers.DMQHD7SZ.js → layers.CCVxi5hB.js} +1 -1
- package/dist/{layers.Bm3vF-Ge.js → layers.CDVEdgbo.js} +1 -1
- package/dist/{layers.DSXwzG0l.js → layers.CEWorf-C.js} +1 -1
- package/dist/{layers.CefLOoC8.js → layers.CFHq5644.js} +1 -1
- package/dist/{layers.i2bcEL4B.js → layers.CG7r3vnU.js} +1 -1
- package/dist/{layers.iSx5HVBW.js → layers.CGJlI-Xk.js} +1 -1
- package/dist/{layers.bdZaUQNB.js → layers.CHh5bEfC.js} +1 -1
- package/dist/{layers.QOZfLJOU.js → layers.CI55as3L.js} +4 -4
- package/dist/{layers.6JZIYhnG.js → layers.CIleDfVS.js} +4 -4
- package/dist/{layers.BXwHF1c0.js → layers.CImHWuWy.js} +1 -1
- package/dist/{layers.CqHFUbCh.js → layers.CJaUnfvI.js} +1 -1
- package/dist/{layers.fCcqSwty.js → layers.CKmkJeNx.js} +1 -1
- package/dist/{layers.DsQYlSSa.js → layers.CLCDYoNw.js} +1 -1
- package/dist/layers.CLLW_-MM.js +1 -0
- package/dist/{layers.DIhuprWj.js → layers.CLSq6d5G.js} +1 -1
- package/dist/{layers.q8HcJw1z.js → layers.CPK-8aJ9.js} +1 -1
- package/dist/{layers.vO27jqdn.js → layers.CQrT2kiR.js} +1 -1
- package/dist/layers.CROEZPe3.js +1 -0
- package/dist/{layers.D0dYIayl.js → layers.CTizu7k3.js} +1 -1
- package/dist/{layers.BKqs5g_B.js → layers.CTtXyJIC.js} +1 -1
- package/dist/{layers.BHstW68e.js → layers.CUFmR0uO.js} +3 -3
- package/dist/{layers.DtEAEu5Y.js → layers.CUQCdPfS.js} +1 -1
- package/dist/{layers.DQ3x1v0k.js → layers.CXwIo_E2.js} +3 -3
- package/dist/{layers.DhlqqsI-.js → layers.Cbh8488l.js} +1 -1
- package/dist/{layers.D5T2vOzx.js → layers.CeWHZgFl.js} +4 -4
- package/dist/{layers.CtAhktPZ.js → layers.ChByNJR4.js} +1 -1
- package/dist/{layers.Bp-6Ampr.js → layers.CiayK_jX.js} +1 -1
- package/dist/{layers.CKTftm3f.js → layers.CiloWOji.js} +1 -1
- package/dist/{layers.DnRoER-T.js → layers.CivvhzLf.js} +1 -1
- package/dist/{layers.B2hK-O3y.js → layers.CjKkiQ-5.js} +1 -1
- package/dist/{layers.Df7-26ey.js → layers.Cm1JRCTb.js} +4 -4
- package/dist/{layers.BXVqLjUh.js → layers.Cn0EJP31.js} +1 -1
- package/dist/{layers.CZpHZoB0.js → layers.CoUMygdc.js} +1 -1
- package/dist/{layers.ClVfKZ9h.js → layers.CqJ3U1Dv.js} +1 -1
- package/dist/{layers.Dfl1_GY-.js → layers.CrTPxY8M.js} +1 -1
- package/dist/{layers.DbRchKwe.js → layers.CrhlCVRH.js} +1 -1
- package/dist/{layers.CcZMrh49.js → layers.CvKfVfgR.js} +1 -1
- package/dist/{layers.4NkfZAG8.js → layers.Cw1UVYRF.js} +1 -1
- package/dist/{layers.BrFRnEbi.js → layers.Cw6AQ1zH.js} +1 -1
- package/dist/{layers.CUuGcjpi.js → layers.Cw76BJN2.js} +1 -1
- package/dist/{layers.BZbUfGYp.js → layers.CxuRP1lw.js} +1 -1
- package/dist/{layers.lgAtpBQI.js → layers.Cyu04oeV.js} +1 -1
- package/dist/{layers.By9AhVvm.js → layers.CzYE0Ooc.js} +1 -1
- package/dist/{layers.D8gdqeYc.js → layers.D16HelAS.js} +2 -2
- package/dist/{layers.BtYjjZLM.js → layers.D1BZqHRU.js} +1 -1
- package/dist/{layers.DwrUaEvN.js → layers.D2PgPKOo.js} +1 -1
- package/dist/{layers.CnmwOTKT.js → layers.D5Kikhmz.js} +3 -3
- package/dist/{layers.CbWg4Qj_.js → layers.D5vKDO3Z.js} +1 -1
- package/dist/{layers.lY3SrA49.js → layers.D634RCv2.js} +1 -1
- package/dist/{layers.DcGOrQq5.js → layers.D6fxuXiV.js} +1 -1
- package/dist/{layers.CXmM9Bvj.js → layers.D77Lwa5B.js} +1 -1
- package/dist/{layers.tjc2yfO8.js → layers.D9Aq-VH-.js} +1 -1
- package/dist/{layers.Ckdux2po.js → layers.DAN-8W9x.js} +6 -6
- package/dist/{layers.qaJdLFHI.js → layers.DB59_4ZT.js} +1 -1
- package/dist/{layers.CJb1-QAi.js → layers.DBKCfxsn.js} +1 -1
- package/dist/{layers.R8OXBVYp.js → layers.DC44PHoe.js} +1 -1
- package/dist/{layers.BM2O77Wh.js → layers.DDIKIPEl.js} +1 -1
- package/dist/{layers.BeIBKBJG.js → layers.DDNSbyH9.js} +1 -1
- package/dist/{layers.a_6-TFT0.js → layers.DE-1MOCW.js} +1 -1
- package/dist/{layers.Dj-z0EfD.js → layers.DEJLOhUD.js} +1 -1
- package/dist/{layers.DnNdcruU.js → layers.DF5Jf3M9.js} +1 -1
- package/dist/{layers.CAo4nRSe.js → layers.DFEtOzCz.js} +1 -1
- package/dist/{layers.B9jC1uEF.js → layers.DFiKSx4e.js} +1 -1
- package/dist/{layers.CYHiWIYN.js → layers.DGwBwWGl.js} +3 -3
- package/dist/layers.DJtJoK2T.js +8 -0
- package/dist/layers.DJugFK-r.js +129 -0
- package/dist/{layers.C_Z4dR-0.js → layers.DJuxVMes.js} +1 -1
- package/dist/{layers.DjzsPlhY.js → layers.DLOvj2ew.js} +1 -1
- package/dist/{layers.BCmyFF5n.js → layers.DLmk4e9A.js} +1 -1
- package/dist/{layers.C_8cg569.js → layers.DMRUFJsX.js} +1 -1
- package/dist/{layers.rddzpnjy.js → layers.DO0X6c0O.js} +2 -2
- package/dist/{layers.DHoGHrwb.js → layers.DPlZKJgj.js} +3 -3
- package/dist/{layers.RZvZoVxE.js → layers.DQxhNW5R.js} +1 -1
- package/dist/layers.DReq7_oC.js +296 -0
- package/dist/{layers.Umldr18w.js → layers.DT9rsUtv.js} +7 -7
- package/dist/{layers.BHGjfW2R.js → layers.DU05EaWA.js} +3 -3
- package/dist/{layers.DL3G4Rrb.js → layers.DUEmMZLx.js} +1 -1
- package/dist/{layers.8L97LNWM.js → layers.DWAsYusl.js} +1 -1
- package/dist/{layers.DXWOVogE.js → layers.DWYk3UK6.js} +1 -1
- package/dist/{layers.CzP0RBWK.js → layers.DWhMR9ZJ.js} +1 -1
- package/dist/{layers.DR3nuNQY.js → layers.DXS1j64l.js} +4 -4
- package/dist/{layers.BLa-XNid.js → layers.DYURS4FP.js} +1 -1
- package/dist/{layers.Bp2T5L9r.js → layers.D_RUDzWv.js} +8 -8
- package/dist/layers.DbVdGKld.js +1 -0
- package/dist/{layers.Ct7Z5o-U.js → layers.DcAdQwtK.js} +1 -1
- package/dist/{layers.D6CzgZCn.js → layers.DcMkjKaG.js} +1 -1
- package/dist/{layers.orP2yP91.js → layers.DgvrVyqi.js} +3 -3
- package/dist/{layers._d6q9aen.js → layers.Dhq37bku.js} +1 -1
- package/dist/{layers.C5kfbdNQ.js → layers.DjkEwMtb.js} +3 -3
- package/dist/{layers.BFRwalLF.js → layers.Dl8xQWMG.js} +1 -1
- package/dist/{layers.CaPMI1KH.js → layers.DlufDKX8.js} +1 -1
- package/dist/{layers.DJYCnlhb.js → layers.DnJXYiZP.js} +1 -1
- package/dist/{layers.R3a4GOcm.js → layers.DnXs_pNB.js} +1 -1
- package/dist/{layers.E2Pg6Xkc.js → layers.Do15drP1.js} +1 -1
- package/dist/{layers.Bkv-oShk.js → layers.DokfH0hd.js} +1 -1
- package/dist/{layers.BRbQRhez.js → layers.DpNZa-jp.js} +1 -1
- package/dist/{layers.n5OStkpA.js → layers.Dr3MCGOM.js} +3 -3
- package/dist/{layers.DJ64BwjI.js → layers.DrQ8hvnX.js} +1 -1
- package/dist/{layers.DsjBnsF_.js → layers.DsptZoFe.js} +1 -1
- package/dist/{layers.CTAkgg4R.js → layers.DtD3skoW.js} +1 -1
- package/dist/{layers.CCqA6oPh.js → layers.Dtms4fW5.js} +1 -1
- package/dist/{layers.SdU27KL4.js → layers.Du0f9MLd.js} +1 -1
- package/dist/{layers.BTYE7zXl.js → layers.DuZA4Xas.js} +1 -1
- package/dist/{layers.zF6RU9h5.js → layers.Dwh8gx1i.js} +1 -1
- package/dist/{layers.KFn2whtk.js → layers.DwizeusR.js} +1 -1
- package/dist/layers.DyL1tlRE.js +276 -0
- package/dist/{layers.my0yWZmR.js → layers.DyRolv1I.js} +1 -1
- package/dist/{layers.DUWcbGsB.js → layers.DzFqkluR.js} +4 -4
- package/dist/{layers.Cn30_EV4.js → layers.DzSq4y89.js} +2 -2
- package/dist/{layers.BZO72u-D.js → layers.Gsg2l9lj.js} +1 -1
- package/dist/{layers.D5n5uB-V.js → layers.H6NhhT0Z.js} +1 -1
- package/dist/layers.MmOx3Q5y.js +28376 -0
- package/dist/{layers.3jBLdifJ.js → layers.NYVxQ2J0.js} +1 -1
- package/dist/{layers.BW7u2_1T.js → layers.Oz9AvXqT.js} +3 -3
- package/dist/layers.TMqEBNpX.js +1 -0
- package/dist/{layers.DUGRqDUB.js → layers.Te010ICg.js} +24 -24
- package/dist/{layers.CitJ-LcP.js → layers.VN0Yeq2V.js} +1 -1
- package/dist/{layers.CvFNr8Uu.js → layers.WnvKMTKL.js} +1 -1
- package/dist/{layers.ovEMwqYP.js → layers.WxQ6m-UP.js} +1 -1
- package/dist/{layers.BjauJJl_.js → layers.X0_Gx5lN.js} +1 -1
- package/dist/{layers.BYA27mAA.js → layers.Y9FRICz5.js} +1 -1
- package/dist/{layers.Dop4IJqp.js → layers.ZGwk_KWb.js} +1 -1
- package/dist/{layers.DBYWjvtj.js → layers.blh6SXpL.js} +1 -1
- package/dist/{layers.DL2VBsfE.js → layers.d5j1lEFQ.js} +1 -1
- package/dist/{layers.CfGk77zR.js → layers.eGX8dSo1.js} +1 -1
- package/dist/{layers.B4eocW2U.js → layers.eIIS5NDC.js} +1 -1
- package/dist/{layers.Cye7d0Ye.js → layers.fxqbBEns.js} +1 -1
- package/dist/layers.hAT_4n_i.js +6 -0
- package/dist/{layers.CRYQyJW8.js → layers.jPwVCOt0.js} +1 -1
- package/dist/{layers.BAxiKghG.js → layers.jgfr1mFT.js} +2 -2
- package/dist/{layers.COeBHfJh.js → layers.lMAyLkuo.js} +1 -1
- package/dist/{layers.DngDRzM2.js → layers.lX16IRwc.js} +1 -1
- package/dist/{layers.BKutBTDw.js → layers.oFuJymzn.js} +1 -1
- package/dist/{layers.DQD1IQ6W.js → layers.p872qi0O.js} +1 -1
- package/dist/{layers.DJuBjYUv.js → layers.pHpJOB6N.js} +1 -1
- package/dist/{layers.CVuk5gp9.js → layers.pgbpWh46.js} +1 -1
- package/dist/{layers.Upsmcdyi.js → layers.pixPTfNv.js} +1 -1
- package/dist/{layers.BLqn32Nb.js → layers.rmoiicvu.js} +1 -1
- package/dist/{layers.BRWktvhi.js → layers.rvTNl4lr.js} +1 -1
- package/dist/{layers.Bz2bAm_o.js → layers.ssiSYLMt.js} +1 -1
- package/dist/{layers.CI9mIisM.js → layers.xcmbrsYu.js} +1 -1
- package/dist/{layers.BPwJ27pe.js → layers.xtkyz0Y7.js} +2 -2
- package/package.json +7 -13
- package/dist/layers.8I_XubBt.js +0 -1
- package/dist/layers.BFl0k28S.js +0 -6
- package/dist/layers.BSgSDW2J.js +0 -1
- package/dist/layers.CCNu5Rkf.js +0 -1
- package/dist/layers.CFSawE7c.js +0 -8
- package/dist/layers.CM9U_WY6.js +0 -304
- package/dist/layers.G1XGzBxR.js +0 -297
- package/dist/layers.fldW-Ogr.js +0 -30328
package/README.md
CHANGED
|
@@ -153,7 +153,6 @@ Use **StylesProvider** to add styling to your HTML content.
|
|
|
153
153
|
|
|
154
154
|
To start working with image uploads, use the **fetchUploadMedia** function, which takes three parameters: **file**, **success**, and **error**. After successfully uploading the image to your service, you should call the **success** function and pass two required arguments: the **URL** of the image and its **ID**.
|
|
155
155
|
Optional: You can also pass two optional parameters: **signal** and **onProgress**. The **signal** allows you to cancel an ongoing upload using an AbortController, and **onProgress** provides the current upload progress in percent — useful for displaying a progress bar or loading state.
|
|
156
|
-
|
|
157
156
|
```
|
|
158
157
|
const fetchUploadMedia = async (
|
|
159
158
|
file: File,
|
|
@@ -371,9 +370,9 @@ For uploading a file or audio, you might need the third parameter "data".
|
|
|
371
370
|
}
|
|
372
371
|
};
|
|
373
372
|
```
|
|
374
|
-
|
|
375
373
|
</details>
|
|
376
374
|
|
|
375
|
+
|
|
377
376
|
<details>
|
|
378
377
|
<summary>
|
|
379
378
|
🤖 AI
|
|
@@ -381,6 +380,7 @@ For uploading a file or audio, you might need the third parameter "data".
|
|
|
381
380
|
|
|
382
381
|
## Connect AI
|
|
383
382
|
|
|
383
|
+
|
|
384
384
|
```
|
|
385
385
|
const fetchPromptResult = async (
|
|
386
386
|
prompt: string,
|
|
@@ -423,9 +423,9 @@ For uploading a file or audio, you might need the third parameter "data".
|
|
|
423
423
|
fetchPromptResult={fetchPromptResult}
|
|
424
424
|
/>
|
|
425
425
|
```
|
|
426
|
-
|
|
427
426
|
</details>
|
|
428
427
|
|
|
428
|
+
|
|
429
429
|
<details>
|
|
430
430
|
<summary>
|
|
431
431
|
📊 Analytics (onTrack)
|
|
@@ -622,7 +622,6 @@ npm run test-unit-watch
|
|
|
622
622
|
```
|
|
623
623
|
|
|
624
624
|
### Unit Test Files Location
|
|
625
|
-
|
|
626
625
|
- `__tests__/unit/` - Unit test files
|
|
627
626
|
- Test files follow the pattern: `*.test.ts` or `*.test.tsx`
|
|
628
627
|
|
|
@@ -647,13 +646,11 @@ npm run test:e2e:headed
|
|
|
647
646
|
```
|
|
648
647
|
|
|
649
648
|
### E2E Test Files Location
|
|
650
|
-
|
|
651
649
|
- `__tests__/e2e/` - End-to-end test files
|
|
652
650
|
- `__tests__/regression/` - Regression test files
|
|
653
651
|
- Test files follow the pattern: `*.spec.js`, `*.spec.mjs`, or `*.spec.ts`
|
|
654
652
|
|
|
655
653
|
### Browser Support
|
|
656
|
-
|
|
657
654
|
- **WebKit** (Safari) - Primary browser for CI/CD
|
|
658
655
|
- **Chromium** and **Firefox** - Available for local testing
|
|
659
656
|
|
|
@@ -673,7 +670,6 @@ npm run start-test-server
|
|
|
673
670
|
## Test Configuration
|
|
674
671
|
|
|
675
672
|
### Playwright Configuration
|
|
676
|
-
|
|
677
673
|
- **Config file**: `playwright.config.js`
|
|
678
674
|
- **Test directory**: `./__tests__/e2e/`
|
|
679
675
|
- **Browser**: WebKit (optimized for CI)
|
|
@@ -682,7 +678,6 @@ npm run start-test-server
|
|
|
682
678
|
- **Retries**: 2 retries in CI, 0 locally
|
|
683
679
|
|
|
684
680
|
### Vitest Configuration
|
|
685
|
-
|
|
686
681
|
- **Config file**: `vitest.config.mts`
|
|
687
682
|
- **Environment**: jsdom
|
|
688
683
|
- **Setup file**: `vitest.setup.mts`
|
|
@@ -691,13 +686,11 @@ npm run start-test-server
|
|
|
691
686
|
## CI/CD Testing
|
|
692
687
|
|
|
693
688
|
Tests run automatically on:
|
|
694
|
-
|
|
695
689
|
- **Push** to `main` or `dev` branches
|
|
696
690
|
- **Pull requests** to `main` or `dev` branches
|
|
697
691
|
- **Manual trigger** via GitHub Actions
|
|
698
692
|
|
|
699
693
|
### GitHub Actions Workflow
|
|
700
|
-
|
|
701
694
|
- **File**: `.github/workflows/tests.yml`
|
|
702
695
|
- **Runner**: Ubuntu Latest
|
|
703
696
|
- **Node.js**: Version 20
|
|
@@ -710,8 +703,7 @@ Tests run automatically on:
|
|
|
710
703
|
|
|
711
704
|
```javascript
|
|
712
705
|
// __tests__/e2e/example.spec.mjs
|
|
713
|
-
import {
|
|
714
|
-
|
|
706
|
+
import { test, expect } from '@playwright/test';
|
|
715
707
|
import { focusEditor } from '../utils/index.mjs';
|
|
716
708
|
|
|
717
709
|
test('Can type text in editor', async ({ page }) => {
|
|
@@ -779,13 +771,11 @@ Common test utilities are available in `__tests__/utils/index.mjs`:
|
|
|
779
771
|
## Performance
|
|
780
772
|
|
|
781
773
|
### Test Execution Times
|
|
782
|
-
|
|
783
774
|
- **Unit Tests**: ~10-30 seconds
|
|
784
775
|
- **E2E Tests (first run)**: ~3-4 minutes (includes browser installation)
|
|
785
776
|
- **E2E Tests (cached)**: ~1-2 minutes (uses cached browsers)
|
|
786
777
|
|
|
787
778
|
### Optimization Features
|
|
788
|
-
|
|
789
779
|
- **Browser Caching**: Playwright browsers cached in CI
|
|
790
780
|
- **Single Worker**: Prevents race conditions in CI
|
|
791
781
|
- **WebKit Only**: Faster than multi-browser matrix
|