@layers-app/editor 0.7.23 → 0.7.24-beta.1
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 +14 -4
- package/dist/index.cjs +2 -2
- package/dist/index.d.ts +7 -79
- package/dist/index.js +9 -15
- package/dist/{layers.DrEc52LK.js → layers.-58OrB2h.js} +1 -1
- package/dist/{layers.RWijwG9P.js → layers.-qmjZJBI.js} +1 -1
- package/dist/layers.1s4BbICk.js +1 -0
- package/dist/{layers.-cpLB214.js → layers.53hChJFF.js} +6 -6
- package/dist/{layers.DnEkqLVp.js → layers.5R_vfSOI.js} +1 -1
- package/dist/{layers.DJw2J7bw.js → layers.5U6DsNQ8.js} +6 -9
- package/dist/{layers.CMYe7bYN.js → layers.6Og6_hox.js} +1 -1
- package/dist/{layers.BazhlVmO.js → layers.8HXImnXe.js} +7 -7
- package/dist/{layers.B9UnUe7h.js → layers.90LiGxII.js} +5 -8
- package/dist/{layers.NrGhQL7i.js → layers.A6MvZ2Sd.js} +4 -4
- package/dist/{layers.DYzee1AM.js → layers.Aw65tqqV.js} +1 -1
- package/dist/{layers.gaS1bI-f.js → layers.B-Ftwt7z.js} +1 -1
- package/dist/{layers.DT2omWm7.js → layers.B0gBsd1G.js} +15 -18
- package/dist/{layers.DXJdiDQR.js → layers.B1l2IEoW.js} +1 -1
- package/dist/{layers.BOn89qn9.js → layers.B2SmhxzW.js} +1 -1
- package/dist/{layers.CM1N26Bn.js → layers.B2nS5rBS.js} +1 -1
- package/dist/{layers.CQ_qc_P4.js → layers.B4ZRP4dv.js} +1 -1
- package/dist/{layers.CE4cvR9M.js → layers.B5V9R6dS.js} +89 -92
- package/dist/{layers.D7NU7knG.js → layers.B6C5kDa3.js} +1 -1
- package/dist/{layers.Pdfj-rps.js → layers.B8qo87mf.js} +1 -1
- package/dist/{layers.DWi6TS6_.js → layers.BB-2khdc.js} +4 -4
- package/dist/{layers.CZhCCCF4.js → layers.BBgqB-dj.js} +1 -1
- package/dist/{layers.Dk79hkeN.js → layers.BCDRxkn5.js} +84 -86
- package/dist/{layers.D15hEfXi.js → layers.BDuP7QP1.js} +7 -7
- package/dist/{layers.Dlx8_WlO.js → layers.BE_-JA1T.js} +1 -1
- package/dist/{layers.D_ElsD-x.js → layers.BFDXAxa6.js} +1 -1
- package/dist/{layers.CJuRPa36.js → layers.BFclfxlH.js} +3 -3
- package/dist/{layers.DgSp_qNb.js → layers.BG9jBVsg.js} +1 -1
- package/dist/{layers.D60upjIB.js → layers.BGGuOo27.js} +1 -1
- package/dist/{layers.I6dVKb2e.js → layers.BI0TTMdG.js} +1 -1
- package/dist/{layers.D8mfmXuz.js → layers.BJOmz-8E.js} +1 -1
- package/dist/{layers.CNaC0uOJ.js → layers.BKOg8e2U.js} +1 -1
- package/dist/{layers.CD5MZRoU.js → layers.BKWiI_4a.js} +1 -1
- package/dist/{layers.CHgOkwRS.js → layers.BLERpK_S.js} +1 -1
- package/dist/layers.BLvWGmxZ.js +304 -0
- package/dist/{layers.CaaLILN3.js → layers.BNxa_eCc.js} +1 -1
- package/dist/{layers.Bk57FuHz.js → layers.BOWoLhye.js} +3 -3
- package/dist/layers.BPXa6Xko.js +8 -0
- package/dist/{layers.CY50u5GH.js → layers.BSwRsFvu.js} +7 -7
- package/dist/layers.BUT_cQlY.js +1 -0
- package/dist/{layers.YI-YTy5V.js → layers.BV2fpDYI.js} +1 -1
- package/dist/{layers.CiInvjHq.js → layers.BVHCv5uJ.js} +4 -7
- package/dist/{layers.BMiwXEvW.js → layers.BVSO7aWV.js} +1 -1
- package/dist/{layers.CPa8seQC.js → layers.BW593_YD.js} +1 -1
- package/dist/{layers.Bhsf0xTD.js → layers.BY9o3NTY.js} +1 -1
- package/dist/layers.BZMHF27f.js +6 -0
- package/dist/{layers.BUGfxwRr.js → layers.BZv7cxTR.js} +89 -92
- package/dist/{layers.BO79CD9P.js → layers.BbDBKF7d.js} +1 -1
- package/dist/{layers.DxlYXQXW.js → layers.BdiCSpJ4.js} +1 -1
- package/dist/{layers.BGdjq9k4.js → layers.Bdzg4UkM.js} +1 -1
- package/dist/{layers.CGjdGBZm.js → layers.BfK7Zksy.js} +1 -1
- package/dist/layers.Bfcc7TOH.js +1 -0
- package/dist/{layers.DK3yoXNH.js → layers.BhOCkx36.js} +1 -1
- package/dist/{layers.29-Qh75h.js → layers.Bi8uSmnl.js} +1 -1
- package/dist/{layers.COELVm2I.js → layers.BiD-9uwr.js} +1 -1
- package/dist/layers.BjtEPALX.js +19 -0
- package/dist/layers.BlT1aHiA.js +1 -0
- package/dist/{layers.D_LRJFEv.js → layers.Bq3WRO3x.js} +1 -1
- package/dist/{layers.bc_jaTfK.js → layers.BqikkqHY.js} +1 -1
- package/dist/{layers.uRZ4uGOB.js → layers.BqkB6bfG.js} +1 -1
- package/dist/{layers.Bm6lNIVW.js → layers.BqxiZwrm.js} +1 -1
- package/dist/layers.Br5DTynl.js +74 -0
- package/dist/{layers.Dv6WAMwH.js → layers.BrUMsy26.js} +1 -1
- package/dist/{layers.D1jHpzKw.js → layers.BsV8AKqE.js} +6 -9
- package/dist/{layers.BvzZuQYi.js → layers.BuGAznjj.js} +4 -4
- package/dist/{layers.BZETNwke.js → layers.Bv1xDmd0.js} +1 -1
- package/dist/{layers.B2KFTJGl.js → layers.Bvra5UGQ.js} +1 -1
- package/dist/{layers.73y0cSdc.js → layers.BwHEZWKu.js} +1 -1
- package/dist/{layers.BCqWj4Xz.js → layers.BwtMeyCj.js} +3 -3
- package/dist/{layers.DjfEK9cQ.js → layers.BxX_THjw.js} +1 -1
- package/dist/{layers.BiqSW2by.js → layers.Bzrkz_Q7.js} +1 -1
- package/dist/{layers.ij555eO_.js → layers.C-UCCxZT.js} +1 -1
- package/dist/{layers.DPnWbB6j.js → layers.C0BLZbdT.js} +1 -1
- package/dist/{layers.Cw-HPQf-.js → layers.C2-P7-v8.js} +1 -1
- package/dist/{layers.Z4nbVM_-.js → layers.C20Qi890.js} +1 -1
- package/dist/{layers.tfwszVHU.js → layers.C47JbXwl.js} +1 -1
- package/dist/{layers.BIG9YKzs.js → layers.C5JgdF76.js} +1 -1
- package/dist/{layers.BffDLyKk.js → layers.CA5feGxW.js} +1 -1
- package/dist/{layers.BDD1KfeR.js → layers.CCqe9zp9.js} +1 -1
- package/dist/{layers.TYxUe44n.js → layers.CDPIcOqa.js} +1 -1
- package/dist/{layers.BSfmVK7z.js → layers.CDexQZa_.js} +5 -8
- package/dist/{layers.C0OvS3X2.js → layers.CFSfvSsm.js} +1 -1
- package/dist/{layers.CcDkFL6P.js → layers.CH4plVEu.js} +3 -3
- package/dist/{layers.DBMV9sVv.js → layers.CHa9lFoT.js} +1 -1
- package/dist/{layers.CXDrUFaD.js → layers.CLT1Xhw2.js} +1 -1
- package/dist/{layers.2g3p410y.js → layers.CP3EufOe.js} +1 -1
- package/dist/{layers.Jso1Rtcd.js → layers.CPIxu6GO.js} +5 -8
- package/dist/{layers.D3HS9TbW.js → layers.CQMssu5A.js} +1 -1
- package/dist/layers.CQR0Nl7I.js +1 -0
- package/dist/{layers.35jlOcdS.js → layers.CR8SQeln.js} +224 -227
- package/dist/{layers.CJdUktnw.js → layers.CRKCl3-s.js} +1 -1
- package/dist/{layers.CHZLcfzW.js → layers.CSi2XRJ2.js} +1 -1
- package/dist/{layers.CxxIH2di.js → layers.CUV1fBKt.js} +12 -15
- package/dist/{layers.C2uP3dSX.js → layers.CV3PBAi0.js} +1 -1
- package/dist/{layers.BqRK5hcw.js → layers.CXPJGJnh.js} +1 -1
- package/dist/{layers.hgaybOo2.js → layers.CXp0yiA_.js} +1 -1
- package/dist/{layers.zxBrRE1P.js → layers.CYMmJIgK.js} +4 -7
- package/dist/{layers.D6MKuxHB.js → layers.Ca_hxCzh.js} +1 -1
- package/dist/{layers.CvQemHpn.js → layers.CadrukAB.js} +1 -1
- package/dist/{layers.Cz08SEjI.js → layers.Cc1VRWwn.js} +1 -1
- package/dist/{layers.pU2_Gt2w.js → layers.CeuPBpSS.js} +1 -1
- package/dist/{layers.DxJkl90c.js → layers.Cf85CE4j.js} +1 -1
- package/dist/{layers.CsMF9Mcc.js → layers.CfJUJqdv.js} +1 -1
- package/dist/layers.CgDb5aPr.js +2 -0
- package/dist/{layers.Bk6_Os8z.js → layers.CiFtNCp_.js} +1 -1
- package/dist/{layers.CA6t_Bjs.js → layers.CkEhuwys.js} +8 -11
- package/dist/{layers.BVKQ1q-V.js → layers.CmWWurhR.js} +1 -1
- package/dist/layers.CmxZ8EKk.js +1 -0
- package/dist/{layers.Q_PS-tRN.js → layers.Co1X8jDP.js} +1 -1
- package/dist/{layers.B2HAS3jD.js → layers.CoCdUjOH.js} +1 -1
- package/dist/layers.Cp63Ydn2.js +50707 -0
- package/dist/{layers.C4B4dvWx.js → layers.CqggRfmv.js} +1 -1
- package/dist/layers.CtCTIWni.js +1 -0
- package/dist/layers.Ctzw3Xb5.js +1 -0
- package/dist/{layers.DTuGifBE.js → layers.CvU_g0Ek.js} +1 -1
- package/dist/layers.Cw5bBQfp.js +118 -0
- package/dist/{layers.CP2XIdh_.js → layers.Cynva3D_.js} +1 -1
- package/dist/{layers.KlKmfsBA.js → layers.Czdt779o.js} +1 -1
- package/dist/{layers.-Tff0gbg.js → layers.D-iLQKYz.js} +1 -1
- package/dist/layers.D0GEGoV_.js +373 -0
- package/dist/{layers.uzQ-2V7t.js → layers.D0ptqEmo.js} +1 -1
- package/dist/{layers.CwqZ78CF.js → layers.D33lu-eC.js} +1 -1
- package/dist/{layers.CIBX4kN6.js → layers.D4VJ5B0e.js} +1 -1
- package/dist/layers.D5DNThwz.js +208 -0
- package/dist/{layers.Bu85fkOP.js → layers.D6XgZ8Az.js} +1 -1
- package/dist/layers.D71D_04V.js +1359 -0
- package/dist/{layers.D2f2ApIk.js → layers.D8vSQAh0.js} +8 -8
- package/dist/{layers.CnjADqOy.js → layers.D9yXBIuK.js} +1 -1
- package/dist/{layers.Cnqb7wKB.js → layers.DAF65Eyh.js} +1 -1
- package/dist/{layers.C4mOUFRJ.js → layers.DD5DttRP.js} +1 -1
- package/dist/{layers.C24-EacD.js → layers.DH-cj5fE.js} +2 -2
- package/dist/{layers.B-kCa5Od.js → layers.DJ7ZL_sW.js} +6 -9
- package/dist/layers.DJnnhy8m.js +96 -0
- package/dist/{layers.CMxdtuyk.js → layers.DM9hpazD.js} +1 -1
- package/dist/{layers.CSqoVmKS.js → layers.DNJEfwiQ.js} +1 -1
- package/dist/{layers.CupTWZsA.js → layers.DNOD_LF5.js} +1 -1
- package/dist/{layers.BLzus7b8.js → layers.DO1NcRAM.js} +1 -1
- package/dist/{layers.DbhnKU2H.js → layers.DPP6_cbD.js} +6 -9
- package/dist/{layers.C7SPnzuD.js → layers.DQIT2lCm.js} +1 -1
- package/dist/{layers.V47hYk_p.js → layers.DRZylWPP.js} +1 -1
- package/dist/{layers.uaIfPWsI.js → layers.DU7EZINs.js} +1 -1
- package/dist/{layers.4pgTRQX0.js → layers.DXyBsBF5.js} +1 -1
- package/dist/{layers.BJzTny2j.js → layers.D_XM1OQx.js} +3 -3
- package/dist/{layers.CJAH6bhp.js → layers.DcKjvxHE.js} +1 -1
- package/dist/{layers.BhTu7lKR.js → layers.DenZLHkn.js} +1 -1
- package/dist/{layers.BsHOozaJ.js → layers.Df79MJjN.js} +3 -3
- package/dist/{layers.DV77DVIT.js → layers.DfgtWeVl.js} +1 -1
- package/dist/layers.DgCaJXYg.js +257 -0
- package/dist/{layers.BOMJfSmk.js → layers.DjGdrDC1.js} +1 -1
- package/dist/{layers.Ba0U3m_a.js → layers.DmEW632Y.js} +2 -2
- package/dist/{layers.CG2UCtoJ.js → layers.DnvUnO-4.js} +1 -1
- package/dist/{layers.CfE7zjUC.js → layers.DpAWXloN.js} +7 -10
- package/dist/{layers.2nKKnihc.js → layers.Dq9b1xqh.js} +1 -1
- package/dist/{layers.CO_gtBDp.js → layers.DrZAE5o5.js} +1 -1
- package/dist/{layers.DDIAJqfF.js → layers.DrprvZC4.js} +1 -1
- package/dist/{layers.HUBCzsU0.js → layers.DvNvJZss.js} +1 -1
- package/dist/layers.Dvl1mlTI.js +1 -0
- package/dist/{layers.CbbuOQ3N.js → layers.DyvnTlHi.js} +1 -1
- package/dist/layers.DzDR_oG4.js +8 -0
- package/dist/{layers.Cf41PJM_.js → layers.DzghPRf3.js} +3813 -3230
- package/dist/{layers._pWN5IRm.js → layers.EXQpfQWq.js} +1 -1
- package/dist/{layers.y9K1nFwM.js → layers.FBzg3C04.js} +50 -50
- package/dist/{layers.DHXWA0Q_.js → layers.FlOgidCp.js} +1 -1
- package/dist/{layers.CyXyFV7h.js → layers.I85BW5o2.js} +1 -1
- package/dist/{layers.DYQ3Thdf.js → layers.IPxhkSfj.js} +1 -1
- package/dist/{layers.CPCRYtsi.js → layers.Lc29kAuz.js} +1 -1
- package/dist/{layers.DdfRdbPy.js → layers.MHEFRzDP.js} +5 -8
- package/dist/{layers.Cbgf19EI.js → layers.MNW-ShKu.js} +11 -14
- package/dist/{layers.CtKHNDRt.js → layers.Me9S-22r.js} +7 -10
- package/dist/{layers.u5kr3hHk.js → layers.Q-xFVVwC.js} +1 -1
- package/dist/layers.Qn6nodoY.js +2 -0
- package/dist/layers.R8mPlCA0.js +261 -0
- package/dist/{layers.BO4uJmfR.js → layers.RpoUh8kq.js} +1 -1
- package/dist/{layers.8ytQIYJn.js → layers.SsSYgMGG.js} +1 -1
- package/dist/{layers.BwTGqVnK.js → layers.V-9Fvifr.js} +1 -1
- package/dist/{layers.SlCB94vp.js → layers.W66NF2U9.js} +1 -1
- package/dist/{layers.CkH00BH2.js → layers.WwL-1p8w.js} +1 -1
- package/dist/{layers.CJc3FMhy.js → layers.X0J3BhYy.js} +4 -7
- package/dist/{layers.B9y931t5.js → layers.XS2AIvBG.js} +1 -1
- package/dist/{layers.CGId_znN.js → layers.XZft6Ook.js} +1 -1
- package/dist/{layers.BTZO4D1M.js → layers.adnwY8ML.js} +1 -1
- package/dist/layers.b9B2NY7n.js +11690 -0
- package/dist/{layers.7RM-Rgpr.js → layers.cf3uaysm.js} +1 -1
- package/dist/{layers.B2lIQaKn.js → layers.d9OooXQC.js} +1 -1
- package/dist/{layers.RDvNC_8V.js → layers.eNGl-u4H.js} +1 -1
- package/dist/{layers.SgNVpv0G.js → layers.eaKLR5Q2.js} +1 -1
- package/dist/{layers.BqssQgQi.js → layers.edPrT81i.js} +1 -1
- package/dist/{layers.C2gSNxMr.js → layers.ekCtLRbA.js} +1 -1
- package/dist/{layers.CiWApQBX.js → layers.fiMaf-_a.js} +3 -3
- package/dist/{layers.CnYkQAte.js → layers.gnAUWHV-.js} +1 -1
- package/dist/{layers.CnwMf9I0.js → layers.h4L4Mc41.js} +1 -1
- package/dist/{layers.C92eHUWa.js → layers.iyoop3cH.js} +3 -3
- package/dist/{layers.CrJ6Ln86.js → layers.jTaJiZzk.js} +1 -1
- package/dist/{layers.Dx6XWGBv.js → layers.jZvrWKJt.js} +1 -1
- package/dist/{layers.BNduWBRP.js → layers.l-ywSwa2.js} +1 -1
- package/dist/{layers.CuHedZYG.js → layers.lG7Mase1.js} +1 -1
- package/dist/{layers.B-9SWmBm.js → layers.mgh4Cwfx.js} +1 -1
- package/dist/{layers.ovBuAp5w.js → layers.mnoq184J.js} +1 -1
- package/dist/{layers.bHAHcDTt.js → layers.nFMauJSN.js} +1 -1
- package/dist/{layers.BuwjUr0U.js → layers.nNlLwZ_E.js} +1 -1
- package/dist/{layers.nVkvDfax.js → layers.oJ61CNkw.js} +1 -1
- package/dist/{layers.D3iO0BYj.js → layers.rzToPUAK.js} +1 -1
- package/dist/{layers.CdbUVvAx.js → layers.soJefnD3.js} +1 -1
- package/dist/{layers.mLGxc7Zs.js → layers.waYEJRmN.js} +1 -1
- package/dist/{layers.PUiCNtZG.js → layers.y0ia1Vp6.js} +1 -1
- package/dist/{layers.3URzBh7V.js → layers.zDfwTCmT.js} +1 -1
- package/package.json +9 -4
- package/dist/layers.BORw_DXM.js +0 -1
- package/dist/layers.BPXfA_Bi.js +0 -389
- package/dist/layers.Bn96IwAe.js +0 -96
- package/dist/layers.C5Ndiwef.js +0 -8
- package/dist/layers.C7XeME1v.js +0 -6
- package/dist/layers.C9iwVv2g.js +0 -1
- package/dist/layers.CCjwwvUf.js +0 -1
- package/dist/layers.CCsKL6P-.js +0 -1
- package/dist/layers.CTq-VHKd.js +0 -8
- package/dist/layers.D0BbR-kO.js +0 -76
- package/dist/layers.D1-NVvB4.js +0 -2
- package/dist/layers.D3ej58GE.js +0 -118
- package/dist/layers.D3kEalRl.js +0 -1
- package/dist/layers.DNR3bB9r.js +0 -2
- package/dist/layers.DVRVApG_.js +0 -22
- package/dist/layers.DzXJQPQT.js +0 -257
- package/dist/layers.GYLtRKCK.js +0 -1
- package/dist/layers.KJwFQi9T.js +0 -1
- package/dist/layers.RUMhBCMz.js +0 -1
- package/dist/layers.TF5UbhSz.js +0 -39287
- package/dist/layers.WIHPbs6I.js +0 -1225
- package/dist/layers.XvSvPUQo.js +0 -213
- package/dist/layers._fDrpnXx.js +0 -1
- package/dist/layers.fQ35NBL8.js +0 -271
package/README.md
CHANGED
|
@@ -153,6 +153,7 @@ 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
|
+
|
|
156
157
|
```
|
|
157
158
|
const fetchUploadMedia = async (
|
|
158
159
|
file: File,
|
|
@@ -370,8 +371,8 @@ For uploading a file or audio, you might need the third parameter "data".
|
|
|
370
371
|
}
|
|
371
372
|
};
|
|
372
373
|
```
|
|
373
|
-
</details>
|
|
374
374
|
|
|
375
|
+
</details>
|
|
375
376
|
|
|
376
377
|
<details>
|
|
377
378
|
<summary>
|
|
@@ -380,7 +381,6 @@ For uploading a file or audio, you might need the third parameter "data".
|
|
|
380
381
|
|
|
381
382
|
## Connect AI
|
|
382
383
|
|
|
383
|
-
|
|
384
384
|
```
|
|
385
385
|
const fetchPromptResult = async (
|
|
386
386
|
prompt: string,
|
|
@@ -423,8 +423,8 @@ For uploading a file or audio, you might need the third parameter "data".
|
|
|
423
423
|
fetchPromptResult={fetchPromptResult}
|
|
424
424
|
/>
|
|
425
425
|
```
|
|
426
|
-
</details>
|
|
427
426
|
|
|
427
|
+
</details>
|
|
428
428
|
|
|
429
429
|
<details>
|
|
430
430
|
<summary>
|
|
@@ -512,6 +512,7 @@ npm run test-unit-watch
|
|
|
512
512
|
```
|
|
513
513
|
|
|
514
514
|
### Unit Test Files Location
|
|
515
|
+
|
|
515
516
|
- `__tests__/unit/` - Unit test files
|
|
516
517
|
- Test files follow the pattern: `*.test.ts` or `*.test.tsx`
|
|
517
518
|
|
|
@@ -536,11 +537,13 @@ npm run test:e2e:headed
|
|
|
536
537
|
```
|
|
537
538
|
|
|
538
539
|
### E2E Test Files Location
|
|
540
|
+
|
|
539
541
|
- `__tests__/e2e/` - End-to-end test files
|
|
540
542
|
- `__tests__/regression/` - Regression test files
|
|
541
543
|
- Test files follow the pattern: `*.spec.js`, `*.spec.mjs`, or `*.spec.ts`
|
|
542
544
|
|
|
543
545
|
### Browser Support
|
|
546
|
+
|
|
544
547
|
- **WebKit** (Safari) - Primary browser for CI/CD
|
|
545
548
|
- **Chromium** and **Firefox** - Available for local testing
|
|
546
549
|
|
|
@@ -560,6 +563,7 @@ npm run start-test-server
|
|
|
560
563
|
## Test Configuration
|
|
561
564
|
|
|
562
565
|
### Playwright Configuration
|
|
566
|
+
|
|
563
567
|
- **Config file**: `playwright.config.js`
|
|
564
568
|
- **Test directory**: `./__tests__/e2e/`
|
|
565
569
|
- **Browser**: WebKit (optimized for CI)
|
|
@@ -568,6 +572,7 @@ npm run start-test-server
|
|
|
568
572
|
- **Retries**: 2 retries in CI, 0 locally
|
|
569
573
|
|
|
570
574
|
### Vitest Configuration
|
|
575
|
+
|
|
571
576
|
- **Config file**: `vitest.config.mts`
|
|
572
577
|
- **Environment**: jsdom
|
|
573
578
|
- **Setup file**: `vitest.setup.mts`
|
|
@@ -576,11 +581,13 @@ npm run start-test-server
|
|
|
576
581
|
## CI/CD Testing
|
|
577
582
|
|
|
578
583
|
Tests run automatically on:
|
|
584
|
+
|
|
579
585
|
- **Push** to `main` or `dev` branches
|
|
580
586
|
- **Pull requests** to `main` or `dev` branches
|
|
581
587
|
- **Manual trigger** via GitHub Actions
|
|
582
588
|
|
|
583
589
|
### GitHub Actions Workflow
|
|
590
|
+
|
|
584
591
|
- **File**: `.github/workflows/tests.yml`
|
|
585
592
|
- **Runner**: Ubuntu Latest
|
|
586
593
|
- **Node.js**: Version 20
|
|
@@ -593,7 +600,8 @@ Tests run automatically on:
|
|
|
593
600
|
|
|
594
601
|
```javascript
|
|
595
602
|
// __tests__/e2e/example.spec.mjs
|
|
596
|
-
import {
|
|
603
|
+
import { expect, test } from '@playwright/test';
|
|
604
|
+
|
|
597
605
|
import { focusEditor } from '../utils/index.mjs';
|
|
598
606
|
|
|
599
607
|
test('Can type text in editor', async ({ page }) => {
|
|
@@ -661,11 +669,13 @@ Common test utilities are available in `__tests__/utils/index.mjs`:
|
|
|
661
669
|
## Performance
|
|
662
670
|
|
|
663
671
|
### Test Execution Times
|
|
672
|
+
|
|
664
673
|
- **Unit Tests**: ~10-30 seconds
|
|
665
674
|
- **E2E Tests (first run)**: ~3-4 minutes (includes browser installation)
|
|
666
675
|
- **E2E Tests (cached)**: ~1-2 minutes (uses cached browsers)
|
|
667
676
|
|
|
668
677
|
### Optimization Features
|
|
678
|
+
|
|
669
679
|
- **Browser Caching**: Playwright browsers cached in CI
|
|
670
680
|
- **Single Worker**: Prevents race conditions in CI
|
|
671
681
|
- **WebKit Only**: Faster than multi-browser matrix
|