@layers-app/editor 0.7.51 → 0.7.52-beta.0
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 +11 -17
- package/dist/index.js +2 -2
- package/dist/{layers.CpX3Ij_c.js → layers.-2ye0MXq.js} +1 -1
- package/dist/{layers.DRSrXX6q.js → layers.-kRMqyvU.js} +2 -2
- package/dist/{layers.CGfXV-3z.js → layers.0Og7-uB9.js} +1 -1
- package/dist/{layers.BSNaTVFI.js → layers.0Q0fZJrc.js} +2 -2
- package/dist/{layers.CBvf-IJn.js → layers.1ClwbdpV.js} +1 -1
- package/dist/{layers.CCfSzSZV.js → layers.1KvLma-C.js} +1 -1
- package/dist/{layers.DwVJ5uKG.js → layers.1ajUpNFy.js} +1 -1
- package/dist/{layers.DG4T1Jav.js → layers.4Y78mBA-.js} +1 -1
- package/dist/{layers.BbIRtF65.js → layers.5fQO6yIC.js} +1 -1
- package/dist/layers.6wJVr6HL.js +8 -0
- package/dist/{layers.C6jSpnIv.js → layers.7kXs0UDw.js} +6 -6
- package/dist/{layers.CSydI2WI.js → layers.A0vNNUYf.js} +3 -3
- package/dist/{layers.B1hsQka7.js → layers.B2wGrD_0.js} +1 -1
- package/dist/{layers.BZBDOlHG.js → layers.B37t365Y.js} +1 -1
- package/dist/{layers.DwFZ2Siz.js → layers.B3CPA-e3.js} +1 -1
- package/dist/{layers.C-FWAsXU.js → layers.B3Nf4F_Y.js} +1 -1
- package/dist/{layers.BKrQPNFd.js → layers.B3vMVAjh.js} +4 -4
- package/dist/{layers.jJHRaniN.js → layers.BAk9s6n-.js} +1 -1
- package/dist/{layers.BPGBMw3I.js → layers.BArjASEZ.js} +1 -1
- package/dist/{layers.DTMNLlzB.js → layers.BB0w7fMR.js} +1 -1
- package/dist/{layers.DN9Hzulf.js → layers.BB_BX154.js} +2 -2
- package/dist/{layers.DMRHi8e3.js → layers.BDAwT_Sz.js} +4 -4
- package/dist/{layers.Crg2FbtB.js → layers.BDpLT4wT.js} +3 -3
- package/dist/{layers.w-3WEq7J.js → layers.BGtxxJx2.js} +1 -1
- package/dist/{layers.BsL2jZ--.js → layers.BJWykyjJ.js} +1 -1
- package/dist/{layers.BHGFyRSD.js → layers.BL1RXD27.js} +1 -1
- package/dist/{layers.CZen_IA0.js → layers.BLAqmfb0.js} +4 -4
- package/dist/{layers.CdcC9q3P.js → layers.BM-XePM3.js} +1 -1
- package/dist/{layers.BbwRmvfU.js → layers.BODht-sU.js} +1 -1
- package/dist/{layers.Dv5C7WNu.js → layers.BPRELpiX.js} +1 -1
- package/dist/{layers.DZy3gGhN.js → layers.BPgkeyPQ.js} +1 -1
- package/dist/layers.BSw4dawR.js +1 -0
- package/dist/{layers.TDk_Bqjw.js → layers.BTabrcN8.js} +1 -1
- package/dist/{layers._J5zNl8-.js → layers.BUooFwfn.js} +1 -1
- package/dist/{layers.Cc9Yhppy.js → layers.BVA_KC7B.js} +1 -1
- package/dist/{layers.nSoXOZde.js → layers.BXkYV52Q.js} +1 -1
- package/dist/{layers.CjiwmQuP.js → layers.BXkvnmNp.js} +1 -1
- package/dist/{layers.CSiuR7kB.js → layers.BYX8GYB0.js} +1 -1
- package/dist/layers.B_BVeVoQ.js +297 -0
- package/dist/{layers.Di5Z-lLB.js → layers.B_kLQ5H9.js} +1 -1
- package/dist/{layers.esLeNsW9.js → layers.Bahm53_7.js} +1 -1
- package/dist/layers.Bbi9UZ1m.js +304 -0
- package/dist/{layers.Dkw5mnGc.js → layers.BfbbNckm.js} +1 -1
- package/dist/layers.Bgd4Je2I.js +30336 -0
- package/dist/{layers.CYLGH0gY.js → layers.BhSyvgx_.js} +1 -1
- package/dist/{layers._9zx3xYo.js → layers.BhqGAwxb.js} +1 -1
- package/dist/{layers.BTkv_g9p.js → layers.Bi34xupz.js} +1 -1
- package/dist/{layers.Cul1IJNM.js → layers.BjAwXFRU.js} +1 -1
- package/dist/{layers.DQdX_Zv2.js → layers.BjP8Y1L0.js} +1 -1
- package/dist/{layers.C4eaTZaS.js → layers.BlKlDMuR.js} +1 -1
- package/dist/{layers.B0hjpxl0.js → layers.BlMrsAwL.js} +1 -1
- package/dist/{layers.B69GQnne.js → layers.BlkQNK7e.js} +1 -1
- package/dist/{layers.eic6_EdL.js → layers.Blu7cWaW.js} +1 -1
- package/dist/{layers.BPznYB1Y.js → layers.BmU0vZ4U.js} +1 -1
- package/dist/{layers.BBRXG6V2.js → layers.BnDaaS2Q.js} +1 -1
- package/dist/{layers.BG4jyqyu.js → layers.BoNi_2cc.js} +2 -2
- package/dist/{layers.DQ2n2GlH.js → layers.BpVD2bm5.js} +1 -1
- package/dist/{layers.VspcqTVQ.js → layers.BpeEpE9v.js} +2 -2
- package/dist/layers.BqHK0Hma.js +6 -0
- package/dist/{layers.a3cK8fiA.js → layers.BqXSCbHd.js} +1 -1
- package/dist/{layers.CprqbTOj.js → layers.BrL0esd9.js} +1 -1
- package/dist/{layers._oRtY_6o.js → layers.BulhpEct.js} +7 -7
- package/dist/{layers.9v4xAtk_.js → layers.BwU0T4Qn.js} +1 -1
- package/dist/{layers.C4eRzMId.js → layers.BxXh15wC.js} +1 -1
- package/dist/{layers.DsbLewS3.js → layers.BxocqCk8.js} +1 -1
- package/dist/{layers.D0a78iEx.js → layers.BynGqIwC.js} +1 -1
- package/dist/{layers.DG9SqpP0.js → layers.C3ssBlYh.js} +1 -1
- package/dist/{layers.GiXIAclg.js → layers.C5DJhNFO.js} +8 -8
- package/dist/{layers.BO2IVEkS.js → layers.C6o9Zdhe.js} +1 -1
- package/dist/{layers.DBdkKrbg.js → layers.C7K5-XTv.js} +1 -1
- package/dist/{layers.D3af6E4n.js → layers.CDqSDBIZ.js} +1 -1
- package/dist/{layers.DvGD0Hp6.js → layers.CE9VzTqs.js} +1 -1
- package/dist/{layers.CSIj5guj.js → layers.CGhKg2UA.js} +1 -1
- package/dist/{layers.CCEF4mnb.js → layers.CH2qry8d.js} +1 -1
- package/dist/{layers.Doie2RkV.js → layers.CHa9oDF7.js} +1 -1
- package/dist/{layers.DlP98mnK.js → layers.CIugMVpt.js} +3 -3
- package/dist/{layers.C4FUOCb-.js → layers.CJLKJmjo.js} +4 -4
- package/dist/{layers.6G0UV902.js → layers.CL9fZ5oN.js} +1 -1
- package/dist/{layers.D-5VGMe5.js → layers.CLUJFeIE.js} +1 -1
- package/dist/{layers.CbflIVsG.js → layers.CMlCT5wk.js} +1 -1
- package/dist/{layers.XVg6tbXV.js → layers.CNvCp7fk.js} +3 -3
- package/dist/{layers.BIpBJT6C.js → layers.CPI5I0VX.js} +1 -1
- package/dist/{layers.uQeIpCwH.js → layers.CPjZu8k3.js} +1 -1
- package/dist/{layers.Bsu4KU17.js → layers.CSN5L4CF.js} +1 -1
- package/dist/{layers.B-0S61CP.js → layers.CVSMXJX_.js} +1 -1
- package/dist/{layers.Cdl1eUPe.js → layers.CVqJ_hEU.js} +1 -1
- package/dist/{layers.qb0cLya_.js → layers.CWd6YseR.js} +1 -1
- package/dist/{layers.DR7Cdo_a.js → layers.CXZZoUze.js} +1 -1
- package/dist/{layers.BJGlitDj.js → layers.CYO38oDa.js} +1 -1
- package/dist/{layers.D8pXWL-E.js → layers.CYvtqCN1.js} +2 -2
- package/dist/{layers.BPpuDweo.js → layers.C_5_djOt.js} +1 -1
- package/dist/{layers.CWhs7Uxe.js → layers.C_vcPPv8.js} +1 -1
- package/dist/{layers.Bx0Yxfrx.js → layers.CbMLqAlS.js} +1 -1
- package/dist/{layers.C3FHbaDM.js → layers.Cd7iDbCg.js} +4 -4
- package/dist/{layers.DL44Lpba.js → layers.Cddq0ynj.js} +1 -1
- package/dist/{layers.DYr_E1W4.js → layers.CfCF_I4t.js} +1 -1
- package/dist/{layers.7IZHK7Tv.js → layers.ChyjvpdM.js} +1 -1
- package/dist/{layers.BmSJZEk8.js → layers.CjyBasgq.js} +1 -1
- package/dist/{layers.BHUpdITA.js → layers.CkuzFxOG.js} +1 -1
- package/dist/{layers.BEBX-ae2.js → layers.ClIpv9ZP.js} +3 -3
- package/dist/{layers.DyLSB_8Q.js → layers.CnQb0AZ9.js} +1 -1
- package/dist/{layers.DXHyHu-b.js → layers.CnWS6y8A.js} +1 -1
- package/dist/{layers.Bqx5zJ4-.js → layers.Cqcd8Q_s.js} +1 -1
- package/dist/{layers.IJjSBz2t.js → layers.CrzoloMo.js} +1 -1
- package/dist/{layers.pyvai9GS.js → layers.CsnKMCrr.js} +1 -1
- package/dist/{layers.RNm8NZlZ.js → layers.CuErZqKp.js} +1 -1
- package/dist/{layers.33JruMb6.js → layers.Cv09a7zu.js} +1 -1
- package/dist/{layers.BRXDmf4d.js → layers.CwGbYQR9.js} +4 -4
- package/dist/{layers.Ce1MGMBV.js → layers.CzpfDcSy.js} +1 -1
- package/dist/{layers.BhHydzph.js → layers.D0KYUoD3.js} +1 -1
- package/dist/{layers.BybF35QC.js → layers.D0_VgPjn.js} +1 -1
- package/dist/{layers.y8ga51a4.js → layers.D1NKpCeQ.js} +1 -1
- package/dist/{layers.Dhje6bds.js → layers.D2Q_zFew.js} +1 -1
- package/dist/{layers.CC0mrSk2.js → layers.D314p-Db.js} +1 -1
- package/dist/{layers.lc0UiWHk.js → layers.D3ecNV-e.js} +1 -1
- package/dist/{layers.CfsySopk.js → layers.D5QPGVKj.js} +1 -1
- package/dist/{layers.BUP52jCo.js → layers.D5UK3w0N.js} +1 -1
- package/dist/{layers.CsDg-JiP.js → layers.D8lV1Fbb.js} +2 -2
- package/dist/layers.DB-Qj1rJ.js +1 -0
- package/dist/{layers.C87eMHsy.js → layers.DC4ZjUbh.js} +1 -1
- package/dist/{layers.DzfadXo-.js → layers.DDOb2tYL.js} +1 -1
- package/dist/{layers.CBujEVgH.js → layers.DF5ljOWG.js} +1 -1
- package/dist/{layers.BJkyXsLU.js → layers.DHC1IyWF.js} +1 -1
- package/dist/{layers.CQfVznmy.js → layers.DHUW1gO1.js} +5 -5
- package/dist/{layers.B4BaeuYN.js → layers.DJKATbv3.js} +1 -1
- package/dist/{layers.CLB26nL2.js → layers.DJSWklBq.js} +1 -1
- package/dist/{layers.BoDKMwyD.js → layers.DNLzZ3QX.js} +1 -1
- package/dist/{layers.BVvekhLI.js → layers.DNP5RcnK.js} +1 -1
- package/dist/{layers.BkuijRQg.js → layers.DPD9pwd0.js} +1 -1
- package/dist/{layers.D6niyCD7.js → layers.DPJrZ1OC.js} +1 -1
- package/dist/{layers.D4mY1Bns.js → layers.DQ77mGjs.js} +1 -1
- package/dist/{layers.DnV4hHEo.js → layers.DRl3B4Mu.js} +1 -1
- package/dist/{layers.9ZYp4GzJ.js → layers.DS4mFHU2.js} +1 -1
- package/dist/{layers.luzG06ke.js → layers.DTJF2RNA.js} +1 -1
- package/dist/{layers.CdbhiG5U.js → layers.DTKZ5xsM.js} +1 -1
- package/dist/{layers.CCi4l-Wq.js → layers.DUzSXUju.js} +4 -4
- package/dist/{layers.B-ETW4mS.js → layers.DVWWq4Vp.js} +1 -1
- package/dist/{layers.UJAyomld.js → layers.DWQBfUMc.js} +1 -1
- package/dist/{layers.uNhb3K7N.js → layers.DWbke12O.js} +24 -24
- package/dist/{layers.YyS-HdiR.js → layers.DY-2miJk.js} +3 -3
- package/dist/{layers.DrvLsdyO.js → layers.DZueIiOc.js} +1 -1
- package/dist/{layers.CQXyaD7G.js → layers.D_JcxpOr.js} +1 -1
- package/dist/{layers.BpCWayXE.js → layers.Da0GMq4-.js} +1 -1
- package/dist/{layers.BwWmI2Mt.js → layers.DbQhoaC_.js} +1 -1
- package/dist/{layers.hA9QVMnE.js → layers.DbuyfXAE.js} +1 -1
- package/dist/{layers.CS2O4AH3.js → layers.DdgREJMv.js} +3 -3
- package/dist/{layers.C00zHL4k.js → layers.DdsAJh8K.js} +1 -1
- package/dist/{layers.Cy6Wwp0B.js → layers.DeHfWWVd.js} +1 -1
- package/dist/{layers.bgieHmEx.js → layers.DejBmdEo.js} +1 -1
- package/dist/{layers.DJ5R5z0_.js → layers.Df6PLFG0.js} +1 -1
- package/dist/{layers.D27wJW6b.js → layers.DfDk_3Ql.js} +1 -1
- package/dist/{layers.rhkfyIZH.js → layers.DgZNGpPI.js} +1 -1
- package/dist/{layers.CSwoqAt9.js → layers.DgqFFfqK.js} +1 -1
- package/dist/{layers.edkx7Vvi.js → layers.DieiCBSw.js} +4 -4
- package/dist/{layers.x2khfcMi.js → layers.DlDzl2Gj.js} +1 -1
- package/dist/{layers.DIhCYKkU.js → layers.Dm3L7Efi.js} +1 -1
- package/dist/{layers.CAKFm60z.js → layers.DmGiLTq2.js} +1 -1
- package/dist/{layers.BZW9UjGO.js → layers.Dp-kSNg2.js} +1 -1
- package/dist/{layers.DGFN-w77.js → layers.DptU0IkH.js} +5 -5
- package/dist/{layers.Br3HmYVi.js → layers.Dr9LShD_.js} +1 -1
- package/dist/{layers.B3E655QR.js → layers.DrvtPf-a.js} +1 -1
- package/dist/{layers.BLZTiPN1.js → layers.DvFF5HkH.js} +1 -1
- package/dist/{layers.BmlLEb0j.js → layers.Dw6ynhTo.js} +1 -1
- package/dist/{layers.DCqGQvy0.js → layers.Dwq5JQl2.js} +1 -1
- package/dist/{layers.DzLdUfDr.js → layers.Dx57415L.js} +1 -1
- package/dist/{layers.X89qTbkA.js → layers.DxUy8jg-.js} +1 -1
- package/dist/{layers.CtdaORkh.js → layers.DyFs5seX.js} +1 -1
- package/dist/{layers.DDPDYBZJ.js → layers.Dza3WQmC.js} +4 -4
- package/dist/{layers.BEY2VGDy.js → layers.E-Rhpau7.js} +3 -3
- package/dist/{layers.CYAwwzHi.js → layers.EH_BPb9X.js} +1 -1
- package/dist/{layers.BP5l4293.js → layers.FVAePrjU.js} +1 -1
- package/dist/{layers.OuskwSfc.js → layers.LS9tlY-u.js} +1 -1
- package/dist/{layers.DcDGh2j-.js → layers.MjvAptKt.js} +1 -1
- package/dist/{layers.BLcmLKBJ.js → layers.Mkn1Xncg.js} +1 -1
- package/dist/{layers.BPwzJvHF.js → layers.OYjzpz8N.js} +1 -1
- package/dist/{layers.awyi1EPB.js → layers.U3X7bkxS.js} +1 -1
- package/dist/{layers.EZ5drvEI.js → layers.Uyh9wSdL.js} +1 -1
- package/dist/{layers.D7ufm_Hh.js → layers.Uztx5z8j.js} +1 -1
- package/dist/{layers.BNm2y0oG.js → layers.XfW6Naha.js} +1 -1
- package/dist/{layers.BG6LOj2y.js → layers.Z11k1LK5.js} +1 -1
- package/dist/{layers.D6A8-LhT.js → layers._qdi8-XU.js} +1 -1
- package/dist/{layers.RjGbOi67.js → layers.aBQZRuxR.js} +1 -1
- package/dist/layers.aPZvoU_9.js +1 -0
- package/dist/{layers.0V2_Egi2.js → layers.b-mBUJEu.js} +1 -1
- package/dist/{layers.DVhv-hr4.js → layers.bTfhzGT6.js} +1 -1
- package/dist/{layers.D6s4k0Ie.js → layers.cMlL3F3L.js} +1 -1
- package/dist/{layers.CU2Xuwwl.js → layers.cwTVYhnB.js} +1 -1
- package/dist/{layers.DwQ4_M0U.js → layers.dWC7vfyd.js} +1 -1
- package/dist/{layers.mdcINxeJ.js → layers.gLWGR5Gf.js} +1 -1
- package/dist/{layers.df3BTmfR.js → layers.hhjKxI2O.js} +1 -1
- package/dist/{layers.Boam9eMz.js → layers.iQ3E2D2b.js} +3 -3
- package/dist/{layers.CcGVIw1j.js → layers.jWBQxSg2.js} +3 -3
- package/dist/{layers.DZxiGC6v.js → layers.l7CbMi-1.js} +1 -1
- package/dist/{layers.-bIAZO8X.js → layers.l80yoYdy.js} +1 -1
- package/dist/{layers.Dr2uW6P7.js → layers.mVLjzy0q.js} +1 -1
- package/dist/{layers.DON-BxXP.js → layers.m_uvzCJX.js} +1 -1
- package/dist/{layers.1zR-SkLn.js → layers.nN6d1bcG.js} +1 -1
- package/dist/{layers.BI2Zo7Wm.js → layers.szlf0bkp.js} +1 -1
- package/dist/{layers.Dib3S4BE.js → layers.thIXAbGl.js} +3 -3
- package/dist/{layers.CMJ7Hp6Q.js → layers.uL60912X.js} +1 -1
- package/dist/{layers.DgoWSdZ6.js → layers.vrrCthD2.js} +1 -1
- package/dist/{layers.DiuK9kyy.js → layers.wOTJ8UtR.js} +1 -1
- package/dist/{layers.DR7P02bg.js → layers.yiHpDSNc.js} +1 -1
- package/dist/{layers.jnJUVTSY.js → layers.zV1bIfv1.js} +3 -3
- package/package.json +13 -7
- package/dist/layers.CGHR3Drm.js +0 -276
- package/dist/layers.CMRcQgEB.js +0 -1
- package/dist/layers.CSxjyXtJ.js +0 -1
- package/dist/layers.CrKIUrKa.js +0 -8
- package/dist/layers.D9PlOBVG.js +0 -28376
- package/dist/layers.DKHUBgX9.js +0 -296
- package/dist/layers.DYu-a1t6.js +0 -1
- package/dist/layers.djwwOKZL.js +0 -129
- package/dist/layers.y_PhQ9i6.js +0 -6
- package/dist/layers.ztU_R7LS.js +0 -1
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>
|
|
@@ -622,6 +622,7 @@ npm run test-unit-watch
|
|
|
622
622
|
```
|
|
623
623
|
|
|
624
624
|
### Unit Test Files Location
|
|
625
|
+
|
|
625
626
|
- `__tests__/unit/` - Unit test files
|
|
626
627
|
- Test files follow the pattern: `*.test.ts` or `*.test.tsx`
|
|
627
628
|
|
|
@@ -646,11 +647,13 @@ npm run test:e2e:headed
|
|
|
646
647
|
```
|
|
647
648
|
|
|
648
649
|
### E2E Test Files Location
|
|
650
|
+
|
|
649
651
|
- `__tests__/e2e/` - End-to-end test files
|
|
650
652
|
- `__tests__/regression/` - Regression test files
|
|
651
653
|
- Test files follow the pattern: `*.spec.js`, `*.spec.mjs`, or `*.spec.ts`
|
|
652
654
|
|
|
653
655
|
### Browser Support
|
|
656
|
+
|
|
654
657
|
- **WebKit** (Safari) - Primary browser for CI/CD
|
|
655
658
|
- **Chromium** and **Firefox** - Available for local testing
|
|
656
659
|
|
|
@@ -670,6 +673,7 @@ npm run start-test-server
|
|
|
670
673
|
## Test Configuration
|
|
671
674
|
|
|
672
675
|
### Playwright Configuration
|
|
676
|
+
|
|
673
677
|
- **Config file**: `playwright.config.js`
|
|
674
678
|
- **Test directory**: `./__tests__/e2e/`
|
|
675
679
|
- **Browser**: WebKit (optimized for CI)
|
|
@@ -678,6 +682,7 @@ npm run start-test-server
|
|
|
678
682
|
- **Retries**: 2 retries in CI, 0 locally
|
|
679
683
|
|
|
680
684
|
### Vitest Configuration
|
|
685
|
+
|
|
681
686
|
- **Config file**: `vitest.config.mts`
|
|
682
687
|
- **Environment**: jsdom
|
|
683
688
|
- **Setup file**: `vitest.setup.mts`
|
|
@@ -686,11 +691,13 @@ npm run start-test-server
|
|
|
686
691
|
## CI/CD Testing
|
|
687
692
|
|
|
688
693
|
Tests run automatically on:
|
|
694
|
+
|
|
689
695
|
- **Push** to `main` or `dev` branches
|
|
690
696
|
- **Pull requests** to `main` or `dev` branches
|
|
691
697
|
- **Manual trigger** via GitHub Actions
|
|
692
698
|
|
|
693
699
|
### GitHub Actions Workflow
|
|
700
|
+
|
|
694
701
|
- **File**: `.github/workflows/tests.yml`
|
|
695
702
|
- **Runner**: Ubuntu Latest
|
|
696
703
|
- **Node.js**: Version 20
|
|
@@ -703,7 +710,8 @@ Tests run automatically on:
|
|
|
703
710
|
|
|
704
711
|
```javascript
|
|
705
712
|
// __tests__/e2e/example.spec.mjs
|
|
706
|
-
import {
|
|
713
|
+
import { expect, test } from '@playwright/test';
|
|
714
|
+
|
|
707
715
|
import { focusEditor } from '../utils/index.mjs';
|
|
708
716
|
|
|
709
717
|
test('Can type text in editor', async ({ page }) => {
|
|
@@ -771,11 +779,13 @@ Common test utilities are available in `__tests__/utils/index.mjs`:
|
|
|
771
779
|
## Performance
|
|
772
780
|
|
|
773
781
|
### Test Execution Times
|
|
782
|
+
|
|
774
783
|
- **Unit Tests**: ~10-30 seconds
|
|
775
784
|
- **E2E Tests (first run)**: ~3-4 minutes (includes browser installation)
|
|
776
785
|
- **E2E Tests (cached)**: ~1-2 minutes (uses cached browsers)
|
|
777
786
|
|
|
778
787
|
### Optimization Features
|
|
788
|
+
|
|
779
789
|
- **Browser Caching**: Playwright browsers cached in CI
|
|
780
790
|
- **Single Worker**: Prevents race conditions in CI
|
|
781
791
|
- **WebKit Only**: Faster than multi-browser matrix
|