@layers-app/editor 0.7.24-beta.2 → 0.7.25
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 +3 -7
- package/dist/index.js +2 -2
- package/dist/{layers.DqbfyCnd.js → layers.-Ls-OI7U.js} +2 -2
- package/dist/{layers.Cd-5JM_K.js → layers.-NLu5icC.js} +6 -6
- package/dist/{layers.qzBgR6uC.js → layers.-SJh4Kq2.js} +1 -1
- package/dist/{layers.CSdQo7oA.js → layers.-rsDxFRH.js} +1 -1
- package/dist/{layers.BhnutUj9.js → layers.1T1xbs_L.js} +1 -1
- package/dist/{layers.BnWEcF6T.js → layers.2MRpSdXa.js} +1 -1
- package/dist/{layers.DXdPPtbW.js → layers.2y946lwL.js} +1 -1
- package/dist/{layers.kdnsBZjF.js → layers.366DcUWU.js} +1 -1
- package/dist/{layers.C-sE4uIx.js → layers.3on5zDVs.js} +1 -1
- package/dist/{layers.VMk3JR1y.js → layers.4X_U1XfV.js} +1 -1
- package/dist/{layers.B-5TnP-k.js → layers.5x8VmuQb.js} +1 -1
- package/dist/{layers.Cho0QTnO.js → layers.8UaSgU3C.js} +1 -1
- package/dist/{layers.BMH4Yy7g.js → layers.9ePqiVXU.js} +1 -1
- package/dist/{layers.pDuXJ1YI.js → layers.B-BmUfj1.js} +1 -1
- package/dist/{layers.ufkz_SAX.js → layers.B4ClD1c5.js} +4 -4
- package/dist/{layers.DIC9yV0q.js → layers.B8esHPGj.js} +1 -1
- package/dist/{layers.Cw-EXOtq.js → layers.B8g_dztZ.js} +1 -1
- package/dist/{layers.DfTxmIVp.js → layers.B9a8_NYJ.js} +40 -40
- package/dist/{layers.B0uSu7Gc.js → layers.B9jCYEPd.js} +1 -1
- package/dist/{layers.C8xB8giP.js → layers.BAncAh6d.js} +1 -1
- package/dist/{layers.DZ9sd5q0.js → layers.BBUPOkcX.js} +1 -1
- package/dist/{layers.8w8bsr4-.js → layers.BBWtc1Na.js} +1 -1
- package/dist/{layers.CfF1K8rl.js → layers.BBZaAVkH.js} +4 -4
- package/dist/{layers.Cvj6EXrz.js → layers.BDZl0ah2.js} +1 -1
- package/dist/layers.BE2A8-RV.js +129 -0
- package/dist/{layers.C8OapKS8.js → layers.BGJOBg2o.js} +1 -1
- package/dist/{layers.dK14SrBt.js → layers.BH1NBu4v.js} +10972 -14069
- package/dist/{layers.q8ndIz7Q.js → layers.BHReeHPG.js} +1 -1
- package/dist/{layers.BOVjl7q5.js → layers.BIlCcpn1.js} +1 -1
- package/dist/{layers.7i_3BURr.js → layers.BJkSCIpo.js} +2 -2
- package/dist/{layers.Bq3Xh04K.js → layers.BJkSsggW.js} +1 -1
- package/dist/{layers.D2GyBlh6.js → layers.BKYZGhXa.js} +1 -1
- package/dist/{layers.BV8giZdP.js → layers.BKd9fapo.js} +3 -3
- package/dist/{layers.CazcYSe9.js → layers.BNcnWyZC.js} +1 -1
- package/dist/{layers.CIoPkS2x.js → layers.BPLm35_w.js} +1 -1
- package/dist/{layers.KmnveLWl.js → layers.BQh9MYpb.js} +1 -1
- package/dist/{layers.Cbh_dXUe.js → layers.BSls3Y1p.js} +1 -1
- package/dist/{layers.DTiYcSmw.js → layers.BT2O41er.js} +1 -1
- package/dist/{layers.iGG31WHu.js → layers.BV05ps6w.js} +1 -1
- package/dist/{layers.DUP3kpRa.js → layers.BV5Pu35h.js} +1 -1
- package/dist/{layers.iw4zj_Ow.js → layers.BVrJzYwq.js} +2 -2
- package/dist/{layers.DugKSt-5.js → layers.BWO0uznn.js} +1 -1
- package/dist/{layers.DkhpBlaz.js → layers.BX9_f-uK.js} +1 -1
- package/dist/{layers.rOml6ewd.js → layers.Ba3lckQw.js} +3 -3
- package/dist/{layers.CLkDpQBh.js → layers.BbTcTSCn.js} +3 -3
- package/dist/{layers.XnKfs2gT.js → layers.BbeMJlU4.js} +24 -24
- package/dist/{layers.DWXsUWQl.js → layers.Bbk9SfBC.js} +1 -1
- package/dist/{layers.XSfPxBCL.js → layers.Bd6cgHp0.js} +1 -1
- package/dist/{layers.CG6NPZB1.js → layers.BdYcBuDT.js} +3 -3
- package/dist/{layers.CjWbbRFs.js → layers.BdaWU2a_.js} +1 -1
- package/dist/{layers.DHSfoNKC.js → layers.BdcGJ_QJ.js} +1 -1
- package/dist/{layers.C96sARH1.js → layers.BfwtWCjL.js} +1 -1
- package/dist/{layers.ILW-v6Mt.js → layers.BgWGKBdw.js} +1 -1
- package/dist/{layers.Bwb5rJkb.js → layers.BgWSbI6d.js} +1 -1
- package/dist/{layers.Ccf6xPw9.js → layers.BgYC2RJy.js} +1 -1
- package/dist/{layers.CDcITFGl.js → layers.BiHFWV_4.js} +1 -1
- package/dist/{layers.B25eZ7s7.js → layers.BiHH6Fh-.js} +1 -1
- package/dist/{layers.D6rLBL9F.js → layers.Bj75ZwcK.js} +1 -1
- package/dist/{layers.Brs3-w4j.js → layers.Bk0JsLzb.js} +1 -1
- package/dist/{layers.CqgggOXP.js → layers.BmNaCbw0.js} +1 -1
- package/dist/{layers.OypWqM6V.js → layers.BmXDrArd.js} +1 -1
- package/dist/{layers.DVNFpf8l.js → layers.Bn-X5mPt.js} +3 -3
- package/dist/{layers.BywfR11f.js → layers.BoFg5lNF.js} +1 -1
- package/dist/{layers.CXN5sfOw.js → layers.Brp6skAm.js} +5 -5
- package/dist/{layers.Bk1N_x_D.js → layers.Bs2nvrmm.js} +1 -1
- package/dist/{layers.COJYU_0r.js → layers.BuJyAbNv.js} +1 -1
- package/dist/{layers.DNEPiynT.js → layers.BuN7h8kT.js} +1 -1
- package/dist/{layers.CmjppwKh.js → layers.Bv-JUrFh.js} +1 -1
- package/dist/{layers.B7wDA1IV.js → layers.BwPh3QUh.js} +1 -1
- package/dist/layers.BxVrC-Rx.js +6 -0
- package/dist/{layers.BDLx59pK.js → layers.ByRG1wSE.js} +1 -1
- package/dist/{layers.4n-ePEMm.js → layers.Bz2VJd4T.js} +1 -1
- package/dist/{layers.CeC-8FAu.js → layers.C06M-eeu.js} +1 -1
- package/dist/{layers.DpceB_xk.js → layers.C1SX3CJH.js} +1 -1
- package/dist/{layers.D0YGvqJd.js → layers.C1avgZsp.js} +1 -1
- package/dist/{layers.dgPpYD1v.js → layers.C3DmzNpM.js} +1 -1
- package/dist/{layers.oTzlYxE6.js → layers.C3XlKjwL.js} +4 -4
- package/dist/{layers.B_YpEY1D.js → layers.C47T8dJb.js} +1 -1
- package/dist/{layers.NBnOBBKT.js → layers.C5AaiHMH.js} +1 -1
- package/dist/{layers.u3ydbbVe.js → layers.C6CgZWbu.js} +1 -1
- package/dist/{layers.GneXXqFK.js → layers.C80QAnj8.js} +1 -1
- package/dist/{layers.BaBIJPb5.js → layers.CAa0nmHW.js} +1 -1
- package/dist/{layers.D-gAeY1H.js → layers.CAa18d0o.js} +1 -1
- package/dist/{layers.DzacycFL.js → layers.CArHK820.js} +1 -1
- package/dist/{layers.BMlzayxv.js → layers.CBfqnUFp.js} +1 -1
- package/dist/{layers.BEeZU3Mf.js → layers.CElY53KJ.js} +1 -1
- package/dist/{layers.MBHYG4ZL.js → layers.CGKhD7iW.js} +1 -1
- package/dist/{layers.B0QTR8B-.js → layers.CG_YrCGZ.js} +1 -1
- package/dist/{layers.DEQ6dXPC.js → layers.CGi5h4Tm.js} +1 -1
- package/dist/{layers.D8l1jorV.js → layers.CHFi7PC4.js} +1 -1
- package/dist/{layers.Ry39JFlN.js → layers.CI9_bgQu.js} +1 -1
- package/dist/{layers.DK6V3OTz.js → layers.CO41l4gK.js} +3 -3
- package/dist/{layers.B9IQdY83.js → layers.CP3V97Mm.js} +1 -1
- package/dist/{layers.D3vGFAS4.js → layers.CQKhlAxU.js} +4 -4
- package/dist/{layers.Cx3fl5uz.js → layers.CQMBJcRL.js} +1 -1
- package/dist/{layers.DSF9uGaH.js → layers.CRg1Vflm.js} +1 -1
- package/dist/{layers.Bxb-66Ma.js → layers.CRhRxpH2.js} +1 -1
- package/dist/{layers.C0ShNMUi.js → layers.CRov8ByE.js} +1 -1
- package/dist/{layers.CBqm5obu.js → layers.CRzNguJz.js} +1 -1
- package/dist/{layers.aertjOjw.js → layers.CTCQa5B7.js} +1 -1
- package/dist/{layers.Dmiejdl1.js → layers.CVcYc1wm.js} +1 -1
- package/dist/layers.CXNL_oox.js +1 -0
- package/dist/{layers.DbN89jyy.js → layers.CYRxy5k9.js} +1 -1
- package/dist/{layers.DMrLwXdx.js → layers.C_tM78la.js} +1 -1
- package/dist/{layers.CeKv60OF.js → layers.Cabxe0kn.js} +2 -2
- package/dist/{layers.BDQ4IfSG.js → layers.CaxVzvWl.js} +1 -1
- package/dist/{layers.Ck91E9FW.js → layers.CdKTin55.js} +1 -1
- package/dist/{layers.BbfB-L98.js → layers.CfAsuE0t.js} +4 -4
- package/dist/{layers.Bvt8DKuz.js → layers.CghzKO0C.js} +1 -1
- package/dist/{layers.uDr14yZF.js → layers.ChuiM2Ge.js} +1 -1
- package/dist/{layers.ERKxX4Fa.js → layers.CiXZ-yap.js} +4 -4
- package/dist/{layers.80yW0jmw.js → layers.CkEVC49l.js} +3 -3
- package/dist/{layers.BGUDPYYo.js → layers.ClSWW8ox.js} +1 -1
- package/dist/{layers.CJdk2mg7.js → layers.Clk1Fe4w.js} +1 -1
- package/dist/{layers.BcvyCzgu.js → layers.Cn08aFBp.js} +1 -1
- package/dist/{layers.bHq5ecQ8.js → layers.Cna8Ix8m.js} +1 -1
- package/dist/{layers.MDAECTjv.js → layers.CphQN_oX.js} +5 -5
- package/dist/{layers.DUvsTZhY.js → layers.CrhNLlxi.js} +1 -1
- package/dist/{layers.CibZt1gP.js → layers.CtqLApR-.js} +1 -1
- package/dist/{layers.ffb1oAw2.js → layers.Cts5KajW.js} +1 -1
- package/dist/{layers.0VOYZl4-.js → layers.CtxJX2Ez.js} +1 -1
- package/dist/{layers.BJAd0xP2.js → layers.CuBkUG-7.js} +1 -1
- package/dist/{layers.BAnrrw4l.js → layers.CvXSTQJz.js} +1 -1
- package/dist/{layers.3dX7DrYL.js → layers.CvkyQals.js} +1 -1
- package/dist/{layers.CEWXm-Lb.js → layers.CwVVNOFl.js} +1 -1
- package/dist/{layers.D_iAJ1jj.js → layers.Czao8tOu.js} +1 -1
- package/dist/{layers.NzLVc767.js → layers.D1i520jt.js} +1 -1
- package/dist/{layers.9i0L26Ea.js → layers.D1lfRls5.js} +1 -1
- package/dist/{layers.Dp9OvDa-.js → layers.D34dFD31.js} +1 -1
- package/dist/{layers.Dkk5hd4G.js → layers.D3fmo_a0.js} +1 -1
- package/dist/{layers.Cezp7_Bk.js → layers.D6MuphvH.js} +1 -1
- package/dist/{layers.BHlUx-w7.js → layers.D6q3P_TI.js} +1 -1
- package/dist/{layers.CHOXLvKt.js → layers.D7UuTR-C.js} +1 -1
- package/dist/{layers.FGbxnt6v.js → layers.D959YWGL.js} +1 -1
- package/dist/{layers.C-sWL4te.js → layers.D9B9kI_I.js} +5867 -5583
- package/dist/{layers.CzlgC8jH.js → layers.D9IH2mS5.js} +2 -2
- package/dist/{layers.D804A_I2.js → layers.DBuKAjE6.js} +3 -3
- package/dist/{layers.CPy8j5Ny.js → layers.DK92KcNH.js} +1 -1
- package/dist/{layers.C1CiakEh.js → layers.DK__DrcP.js} +1 -1
- package/dist/{layers.BHrtg70c.js → layers.DOfjoqoq.js} +1 -1
- package/dist/{layers.BfEDqcz5.js → layers.DPYvrBWd.js} +1 -1
- package/dist/{layers.BZqGrOy_.js → layers.DQTRq76g.js} +1 -1
- package/dist/{layers.Df3FOy8Z.js → layers.DSJEusk2.js} +1 -1
- package/dist/{layers.CjT5fEk-.js → layers.DTruHn92.js} +4 -4
- package/dist/{layers.kdpCQniz.js → layers.DU_zIQ6M.js} +1 -1
- package/dist/layers.DUnhjbuG.js +1 -0
- package/dist/{layers.ajrt0eQ8.js → layers.DWdnOpAN.js} +1 -1
- package/dist/{layers.B8QQ4nQj.js → layers.DWoq7Geh.js} +2 -2
- package/dist/{layers.BD1b943G.js → layers.DXtHZ1nj.js} +1 -1
- package/dist/{layers.BW1o4uJI.js → layers.DY10hfS3.js} +1 -1
- package/dist/{layers.DDVyRZL1.js → layers.D_2dwpMo.js} +1 -1
- package/dist/{layers.BUnQSf9g.js → layers.DbK_nYcQ.js} +1 -1
- package/dist/layers.DdnbCtG7.js +8 -0
- package/dist/{layers.BZxyJARu.js → layers.DhGC-0BV.js} +1 -1
- package/dist/{layers.DOhuP2XP.js → layers.DhHWB_mo.js} +1 -1
- package/dist/{layers.CUB79XZC.js → layers.DqrXXHei.js} +1 -1
- package/dist/{layers.CmYzRmP0.js → layers.Dr8lokU-.js} +1 -1
- package/dist/{layers.BKn-xWz9.js → layers.DrawsUTF.js} +4 -4
- package/dist/{layers.zHGFQT-m.js → layers.DtPJRxRH.js} +2 -2
- package/dist/{layers.B9iYuvj5.js → layers.DtVegRxz.js} +1 -1
- package/dist/{layers.UAZI32jp.js → layers.Du_afT3B.js} +4 -4
- package/dist/{layers.D5AdWXNt.js → layers.Dz3W71gG.js} +1 -1
- package/dist/{layers.DJmQffTu.js → layers.DzgnM6hP.js} +1 -1
- package/dist/{layers.RAtyqCWO.js → layers.Dzrd2B4v.js} +1 -1
- package/dist/{layers.DadGTzQx.js → layers.H8FpXLLW.js} +1 -1
- package/dist/{layers.BihtORCg.js → layers.HLK-BXOS.js} +1 -1
- package/dist/{layers.BI4EVV0I.js → layers.Iv3TGUjH.js} +1 -1
- package/dist/{layers.DCmLGwiU.js → layers.JNFHOtMm.js} +1 -1
- package/dist/{layers.DfkmEQUA.js → layers.JnIQDm74.js} +1 -1
- package/dist/{layers.4BNTtI_-.js → layers.KkRLbnbd.js} +1 -1
- package/dist/{layers.DthXnsGy.js → layers.KnN1a1l_.js} +1 -1
- package/dist/{layers.Bp83A_Si.js → layers.LPHz4BH7.js} +1 -1
- package/dist/{layers.BcOuZCDo.js → layers.LgT80au8.js} +1 -1
- package/dist/{layers.i4SYfJ6l.js → layers.M8WSI-kl.js} +1 -1
- package/dist/{layers.TNZ-1f3B.js → layers.NXDHF5r0.js} +1 -1
- package/dist/{layers.DnlXhK-g.js → layers.PGgmS3VA.js} +1 -1
- package/dist/{layers.nhlLNn6x.js → layers.Q6R5qldt.js} +1 -1
- package/dist/{layers.B_-32Tbz.js → layers.QE-5n_hV.js} +3 -3
- package/dist/{layers.BAZx7Xla.js → layers.RxenRXMY.js} +1 -1
- package/dist/{layers.C8dergF_.js → layers.SrRljbf9.js} +1 -1
- package/dist/{layers.DUdNCUF0.js → layers.TH2ncHZv.js} +1 -1
- package/dist/{layers.B3Q4c3xT.js → layers.TrDbXRb8.js} +1 -1
- package/dist/{layers.Dk9H8ECA.js → layers.UlDQNWlA.js} +3 -3
- package/dist/{layers.Bd4dTWFq.js → layers.XesU1l2Y.js} +1 -1
- package/dist/{layers.SGzNeHXG.js → layers.YIK80l-U.js} +1 -1
- package/dist/{layers.BxVkrJ_p.js → layers._JK3_ksl.js} +1 -1
- package/dist/{layers.DeTFvhcn.js → layers.__unmC_q.js} +1 -1
- package/dist/{layers.CmnHtPCB.js → layers.axz7t9Nk.js} +1 -1
- package/dist/{layers.DvNJv26Y.js → layers.baDgNsYq.js} +3 -3
- package/dist/{layers.DGZPeztR.js → layers.cca4U64x.js} +1 -1
- package/dist/{layers.DOfE5-dg.js → layers.d-AtY83o.js} +1 -1
- package/dist/{layers.Bx4w9aEN.js → layers.d7lMg0QR.js} +1 -1
- package/dist/{layers.CFFGEM76.js → layers.e-P09YvR.js} +1 -1
- package/dist/{layers.CgzgqX8K.js → layers.eaF4IPbr.js} +1 -1
- package/dist/{layers.vMET9k0C.js → layers.gtTSzMc7.js} +1 -1
- package/dist/{layers.r4lwp2xJ.js → layers.itjHVGTW.js} +1 -1
- package/dist/{layers.CfNNTxtG.js → layers.jtRJowIU.js} +1 -1
- package/dist/{layers.BtUxEmnY.js → layers.k2tN79I5.js} +1 -1
- package/dist/{layers.BqaGsFtp.js → layers.kfnq0Wd4.js} +1 -1
- package/dist/{layers.B-hNjj3E.js → layers.vRc0zJGo.js} +1 -1
- package/dist/{layers.CquJkdYN.js → layers.wK0oP6nr.js} +3 -3
- package/dist/{layers.C_5lRAyH.js → layers.y6SdGC3M.js} +1 -1
- package/dist/{layers.C9hnZZm5.js → layers.yhyvjVY-.js} +1 -1
- package/dist/{layers.DrTw7dRv.js → layers.z0ksrFC0.js} +1 -1
- package/package.json +4 -10
- package/dist/layers.67LwCf9n.js +0 -1
- package/dist/layers.8CPZ-q6m.js +0 -8
- package/dist/layers.BZtmQMIi.js +0 -1
- package/dist/layers.DgMFctSI.js +0 -304
- package/dist/layers.b0-pMkVx.js +0 -6
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
|
👥 Collaboration
|
|
@@ -512,7 +512,6 @@ npm run test-unit-watch
|
|
|
512
512
|
```
|
|
513
513
|
|
|
514
514
|
### Unit Test Files Location
|
|
515
|
-
|
|
516
515
|
- `__tests__/unit/` - Unit test files
|
|
517
516
|
- Test files follow the pattern: `*.test.ts` or `*.test.tsx`
|
|
518
517
|
|
|
@@ -537,13 +536,11 @@ npm run test:e2e:headed
|
|
|
537
536
|
```
|
|
538
537
|
|
|
539
538
|
### E2E Test Files Location
|
|
540
|
-
|
|
541
539
|
- `__tests__/e2e/` - End-to-end test files
|
|
542
540
|
- `__tests__/regression/` - Regression test files
|
|
543
541
|
- Test files follow the pattern: `*.spec.js`, `*.spec.mjs`, or `*.spec.ts`
|
|
544
542
|
|
|
545
543
|
### Browser Support
|
|
546
|
-
|
|
547
544
|
- **WebKit** (Safari) - Primary browser for CI/CD
|
|
548
545
|
- **Chromium** and **Firefox** - Available for local testing
|
|
549
546
|
|
|
@@ -563,7 +560,6 @@ npm run start-test-server
|
|
|
563
560
|
## Test Configuration
|
|
564
561
|
|
|
565
562
|
### Playwright Configuration
|
|
566
|
-
|
|
567
563
|
- **Config file**: `playwright.config.js`
|
|
568
564
|
- **Test directory**: `./__tests__/e2e/`
|
|
569
565
|
- **Browser**: WebKit (optimized for CI)
|
|
@@ -572,7 +568,6 @@ npm run start-test-server
|
|
|
572
568
|
- **Retries**: 2 retries in CI, 0 locally
|
|
573
569
|
|
|
574
570
|
### Vitest Configuration
|
|
575
|
-
|
|
576
571
|
- **Config file**: `vitest.config.mts`
|
|
577
572
|
- **Environment**: jsdom
|
|
578
573
|
- **Setup file**: `vitest.setup.mts`
|
|
@@ -581,13 +576,11 @@ npm run start-test-server
|
|
|
581
576
|
## CI/CD Testing
|
|
582
577
|
|
|
583
578
|
Tests run automatically on:
|
|
584
|
-
|
|
585
579
|
- **Push** to `main` or `dev` branches
|
|
586
580
|
- **Pull requests** to `main` or `dev` branches
|
|
587
581
|
- **Manual trigger** via GitHub Actions
|
|
588
582
|
|
|
589
583
|
### GitHub Actions Workflow
|
|
590
|
-
|
|
591
584
|
- **File**: `.github/workflows/tests.yml`
|
|
592
585
|
- **Runner**: Ubuntu Latest
|
|
593
586
|
- **Node.js**: Version 20
|
|
@@ -600,8 +593,7 @@ Tests run automatically on:
|
|
|
600
593
|
|
|
601
594
|
```javascript
|
|
602
595
|
// __tests__/e2e/example.spec.mjs
|
|
603
|
-
import {
|
|
604
|
-
|
|
596
|
+
import { test, expect } from '@playwright/test';
|
|
605
597
|
import { focusEditor } from '../utils/index.mjs';
|
|
606
598
|
|
|
607
599
|
test('Can type text in editor', async ({ page }) => {
|
|
@@ -669,13 +661,11 @@ Common test utilities are available in `__tests__/utils/index.mjs`:
|
|
|
669
661
|
## Performance
|
|
670
662
|
|
|
671
663
|
### Test Execution Times
|
|
672
|
-
|
|
673
664
|
- **Unit Tests**: ~10-30 seconds
|
|
674
665
|
- **E2E Tests (first run)**: ~3-4 minutes (includes browser installation)
|
|
675
666
|
- **E2E Tests (cached)**: ~1-2 minutes (uses cached browsers)
|
|
676
667
|
|
|
677
668
|
### Optimization Features
|
|
678
|
-
|
|
679
669
|
- **Browser Caching**: Playwright browsers cached in CI
|
|
680
670
|
- **Single Worker**: Prevents race conditions in CI
|
|
681
671
|
- **WebKit Only**: Faster than multi-browser matrix
|