From 7b57b900f230939fabeecc2e472b376fd3f9aaa6 Mon Sep 17 00:00:00 2001 From: Vita Kuvakina Date: Mon, 4 Sep 2023 11:59:29 +0300 Subject: [PATCH 1/5] #3181 - Update RXN files auto-tests --- .../Rxn-Files/rxn-files.spec.ts | 268 +++++++++++++++++- ...ed-RXN-2000-3000-file-1-chromium-linux.png | Bin 0 -> 18514 bytes ...s-Type-Multiple-group-1-chromium-linux.png | Bin 0 -> 29739 bytes ...-that-contains-Sgroup-1-chromium-linux.png | Bin 0 -> 29640 bytes ...m-and-bond-properties-1-chromium-linux.png | Bin 0 -> 8567 bytes .../tests/Templates/S-Groups/s-groups.spec.ts | 3 +- ...on-with-atom-and-bond-properties-saved.rxn | 23 ++ ...reaction-with-several-components-v3000.rxn | 264 +++++++++++++++++ .../RXN/reaction-with-several-components.rxn | 154 ++++++++++ ...s-with-unsupported-s-group-type-V2000.rxn} | 0 ...ps-with-unsupported-s-group-type-V3000.rxn | 264 +++++++++++++++++ ...e-with-two-reaction-arrows-v2000-saved.rxn | 41 +++ ...e-with-two-reaction-arrows-v3000-saved.rxn | 41 +++ 13 files changed, 1056 insertions(+), 2 deletions(-) create mode 100644 ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Open-and-Save-file---Import-the-structure-from-the-saved-RXN-2000-3000-file-1-chromium-linux.png create mode 100644 ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Open-and-Save-file---Open-the-RXN-v2000-v3000-files-with-S-Group-Properties-Type-Multiple-group-1-chromium-linux.png create mode 100644 ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Open-and-Save-file---Reaction-from-file-that-contains-Sgroup-1-chromium-linux.png create mode 100644 ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Open-and-Save-file---Reaction-with-atom-and-bond-properties-1-chromium-linux.png create mode 100644 ketcher-autotests/tests/test-data/RXN/reaction-with-atom-and-bond-properties-saved.rxn create mode 100644 ketcher-autotests/tests/test-data/RXN/reaction-with-several-components-v3000.rxn create mode 100644 ketcher-autotests/tests/test-data/RXN/reaction-with-several-components.rxn rename ketcher-autotests/tests/test-data/{structure-with-s-groups-with-unsupported-s-group-type.rxn => RXN/structure-with-s-groups-with-unsupported-s-group-type-V2000.rxn} (100%) create mode 100644 ketcher-autotests/tests/test-data/RXN/structure-with-s-groups-with-unsupported-s-group-type-V3000.rxn create mode 100644 ketcher-autotests/tests/test-data/RXN/structure-with-two-reaction-arrows-v2000-saved.rxn create mode 100644 ketcher-autotests/tests/test-data/RXN/structure-with-two-reaction-arrows-v3000-saved.rxn diff --git a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts index 8f5cb56a94..b99bb2525e 100644 --- a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts +++ b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts @@ -1,11 +1,277 @@ -import { expect, test } from '@playwright/test'; +import { expect, test, Page } from '@playwright/test'; import { takeEditorScreenshot, receiveFileComparisonData, openFileAndAddToCanvas, saveToFile, + drawBenzeneRing, + getCoordinatesTopAtomOfBenzeneRing, + clickOnAtom, + clickOnBond, + BondTool, + selectNestedTool, + ArrowTool, + selectAtomInToolbar, + AtomButton, + BondType, + clickOnTheCanvas, + selectTopPanelButton, + TopPanelButton, + RgroupTool, + pressButton, + selectLeftPanelButton, + LeftPanelButton, + selectAction, + dragMouseTo, + setAttachmentPoints, + moveMouseToTheMiddleOfTheScreen, + getCoordinatesOfTheMiddleOfTheScreen, } from '@utils'; import { getRxn } from '@utils/formats'; +import { drawReactionWithTwoBenzeneRings } from '@utils/canvas/drawStructures'; + +async function savedFileInfoStartsWithRxn(page: Page, wantedResult = false) { + await selectTopPanelButton(TopPanelButton.Save, page); + const textareaSelector = 'textarea[class^="Save-module_previewArea"]'; + const textareaElement = await page.$(textareaSelector); + const textareaText = await textareaElement?.textContent(); + const expectedSentence = '$RXN'; + wantedResult + ? expect(textareaText?.startsWith(expectedSentence)).toBeTruthy() + : expect(textareaText?.startsWith(expectedSentence)).toBeFalsy(); +} + +test('Open and Save file - Reaction with atom and bond properties', async ({ + page, +}) => { + /** + * Test case: EPMLSOPKET-1897 + * Description: Reaction with atom and bond properties + */ + const xOffsetFromCenter = 40; + await page.goto(''); + await drawBenzeneRing(page); + await selectNestedTool(page, BondTool.SINGLE_AROMATIC); + await clickOnBond(page, BondType.DOUBLE, 1); + await selectNestedTool(page, BondTool.TRIPPLE); + await clickOnBond(page, BondType.DOUBLE, 1); + await selectAtomInToolbar(AtomButton.Nitrogen, page); + await clickOnAtom(page, 'C', 1); + await selectNestedTool(page, ArrowTool.ARROW_FILLED_BOW); + await clickOnTheCanvas(page, xOffsetFromCenter, 0); + + const expectedFile = await getRxn(page); + await saveToFile( + 'RXN/reaction-with-atom-and-bond-properties-saved.rxn', + expectedFile, + ); + + await selectAction(TopPanelButton.Clear, page); + + await openFileAndAddToCanvas( + 'RXN/reaction-with-atom-and-bond-properties-saved.rxn', + page, + ); + + await takeEditorScreenshot(page); +}); + +test('Open and Save file - Reaction from file that contains Rgroup', async ({ + page, +}) => { + /** + * Test case: EPMLSOPKET-1901 + * Description: Reaction from file that contains Rgroup + */ + const xOffsetFromCenter = 40; + await page.goto(''); + await drawBenzeneRing(page); + await selectLeftPanelButton(LeftPanelButton.R_GroupLabelTool, page); + await clickOnAtom(page, 'C', 1); + await page.getByRole('button', { name: 'R7' }).click(); + await page.getByRole('button', { name: 'Apply' }).click(); + await selectNestedTool(page, ArrowTool.ARROW_FILLED_BOW); + await clickOnTheCanvas(page, xOffsetFromCenter, 0); + await selectTopPanelButton(TopPanelButton.Save, page); + const saveButtonOne = page.getByRole('button', { name: 'Save', exact: true }); + await expect(saveButtonOne).not.toHaveAttribute('disabled', 'disabled'); + + await pressButton(page, 'Cancel'); + await selectNestedTool(page, RgroupTool.ATTACHMENT_POINTS); + await setAttachmentPoints( + page, + { label: 'C', index: 2 }, + { primary: true }, + 'Apply', + ); + await selectTopPanelButton(TopPanelButton.Save, page); + const saveButtonTwo = page.getByRole('button', { name: 'Save', exact: true }); + await expect(saveButtonTwo).not.toHaveAttribute('disabled', 'disabled'); + + await page.getByRole('button', { name: 'Cancel' }).click(); + await selectNestedTool(page, RgroupTool.R_GROUP_FRAGMENT); + const { x, y } = await getCoordinatesTopAtomOfBenzeneRing(page); + await page.mouse.click(x, y); + await page.getByRole('button', { name: 'R22' }).click(); + await page.getByRole('button', { name: 'Apply' }).click(); + await selectTopPanelButton(TopPanelButton.Save, page); + const saveButtonThree = page.getByRole('button', { + name: 'Save', + exact: true, + }); + await expect(saveButtonThree).not.toHaveAttribute('disabled', 'disabled'); +}); + +// EPMLSOPKET-1903 - TO DO +// TO DO: while saving file showed ERROR: array: invalid index -2 (size=0) +// Need to create new bug looks like it connected to #2389 issue +test.fixme( + 'Open and Save file - Reaction from file that contains Sgroup', + async ({ page }) => { + /** + * Test case: EPMLSOPKET-1903 + * Description: Reaction from file that contains Sgroup + */ + await page.goto(''); + await openFileAndAddToCanvas( + 'RXN/structure-with-s-groups-with-unsupported-s-group-type.rxn', + page, + ); + const expectedFile = await getRxn(page); + await saveToFile( + 'RXN/structure-with-s-groups-with-unsupported-s-group-type-saved.rxn', + expectedFile, + ); + await openFileAndAddToCanvas( + 'RXN/structure-with-s-groups-with-unsupported-s-group-type-saved.rxn', + page, + ); + await takeEditorScreenshot(page); + }, +); + +test('Open and Save file - File without arrow or(and) plus-symbol', async ({ + page, +}) => { + /** + * Test case: EPMLSOPKET-1905 + * Description: File without arrow or(and) plus-symbol + */ + await page.goto(''); + await selectLeftPanelButton(LeftPanelButton.Chain, page); + await moveMouseToTheMiddleOfTheScreen(page); + const { x, y } = await getCoordinatesOfTheMiddleOfTheScreen(page); + const xDelta = 300; + const xDeltaHalf = 150; + const yDelta50 = 50; + const yDelta20 = 20; + const xCoordinatesWithShift = x + xDelta; + const xCoordinatesWithShiftHalf = x + xDeltaHalf; + const yCoordinatesWithShift = y + yDelta50; + await dragMouseTo(xCoordinatesWithShift, y, page); + await savedFileInfoStartsWithRxn(page); + + await pressButton(page, 'Cancel'); + await selectLeftPanelButton(LeftPanelButton.ReactionPlusTool, page); + await page.mouse.click(xCoordinatesWithShiftHalf, yCoordinatesWithShift); + const ySecondChain = yCoordinatesWithShift + yDelta50; + await selectLeftPanelButton(LeftPanelButton.Chain, page); + await page.mouse.move(x, ySecondChain); + await dragMouseTo(xCoordinatesWithShift, ySecondChain, page); + await savedFileInfoStartsWithRxn(page); + + await pressButton(page, 'Cancel'); + await selectLeftPanelButton(LeftPanelButton.Erase, page); + await page.mouse.click(xCoordinatesWithShiftHalf, yCoordinatesWithShift); + await selectNestedTool(page, ArrowTool.ARROW_FILLED_BOW); + const yArrowStart = y + yDelta20; + const yArrowEnd = yArrowStart + yDelta20; + await page.mouse.move(xCoordinatesWithShiftHalf, yArrowStart); + await dragMouseTo(xCoordinatesWithShiftHalf, yArrowEnd, page); + await savedFileInfoStartsWithRxn(page, true); + + await pressButton(page, 'Cancel'); + await selectTopPanelButton(TopPanelButton.Clear, page); + await selectNestedTool(page, ArrowTool.ARROW_FILLED_BOW); + await page.mouse.move(xCoordinatesWithShiftHalf, yArrowStart); + await dragMouseTo(xCoordinatesWithShiftHalf, yArrowEnd, page); + await savedFileInfoStartsWithRxn(page, true); +}); + +// EPMLSOPKET-8904 - TO DO +// TO DO: looks like issue was not fixed +// Need to recheck issue #1837, added new screenshot there +test.fixme( + 'Open and Save file - Structure is not missing when "Paste from clipboard" or "Open from file" if reaction consists of two or more reaction arrows and structures', + async ({ page }) => { + /** + * Test case: EPMLSOPKET-8904 + * Description: Structure isn't missing when "Paste from clipboard" or "Open from file" if reaction consists of two or more reaction arrows and structures + */ + await page.goto(''); + const RING_OFFSET = 150; + const ARROW_OFFSET = 20; + const ARROW_LENGTH = 100; + await drawReactionWithTwoBenzeneRings( + page, + RING_OFFSET, + ARROW_OFFSET, + ARROW_LENGTH, + ); + + const xOffsetFromCenter = 50; + await selectNestedTool(page, ArrowTool.ARROW_FILLED_BOW); + await moveMouseToTheMiddleOfTheScreen(page); + await clickOnTheCanvas(page, xOffsetFromCenter, 0); + const expectedFileV2000 = await getRxn(page); + await takeEditorScreenshot(page); + await saveToFile( + 'RXN/structure-with-two-reaction-arrows-v2000-saved.rxn', + expectedFileV2000, + ); + const expectedFileV3000 = await getRxn(page); + await saveToFile( + 'RXN/structure-with-two-reaction-arrows-v3000-saved.rxn', + expectedFileV3000, + ); + await selectAction(TopPanelButton.Clear, page); + await openFileAndAddToCanvas( + 'RXN/structure-with-two-reaction-arrows-v3000-saved.rxn', + page, + ); + await takeEditorScreenshot(page); + }, +); + +test('Open and Save file - Import the structure from the saved RXN 2000/3000 file', async ({ + page, +}) => { + /** + * Test case: EPMLSOPKET-12964 + * Description: Import the structure from the saved RXN 2000/3000 file + */ + await page.goto(''); + await openFileAndAddToCanvas( + 'RXN/reaction-with-several-components.rxn', + page, + ); + await takeEditorScreenshot(page); +}); + +test('Open and Save file - Open the RXN v2000/v3000 files with S-Group Properties Type = Multiple group', async ({ + page, +}) => { + /** + * Test case: EPMLSOPKET-12967 for Open RXN v3000 file with 'S-Group Properties Type = Multiple group rxnV3000Multiple.zip + * Description: Open the RXN v2000/v3000 files with S-Group Properties Type = Multiple group + */ + await page.goto(''); + await openFileAndAddToCanvas( + 'RXN/structure-with-s-groups-with-unsupported-s-group-type-V3000.rxn', + page, + ); + await takeEditorScreenshot(page); +}); test('Open and Save file - Reaction from file that contains abbreviation 1/2 - open', async ({ page, diff --git a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Open-and-Save-file---Import-the-structure-from-the-saved-RXN-2000-3000-file-1-chromium-linux.png b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Open-and-Save-file---Import-the-structure-from-the-saved-RXN-2000-3000-file-1-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..96b1fe3f7464018b4050fc303e2a396892e7a256 GIT binary patch literal 18514 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 literal 0 HcmV?d00001 diff --git a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Open-and-Save-file---Reaction-from-file-that-contains-Sgroup-1-chromium-linux.png b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Open-and-Save-file---Reaction-from-file-that-contains-Sgroup-1-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..43805cb0783c9f7c9b945c96098a2f9cce9bc5ce GIT binary patch literal 29640 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 WIqxO6#--6TzPy}G>+fcl)cppd`bc*G literal 0 HcmV?d00001 diff --git a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Open-and-Save-file---Reaction-with-atom-and-bond-properties-1-chromium-linux.png b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Open-and-Save-file---Reaction-with-atom-and-bond-properties-1-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..a101e27616aff32f290fddedcd26aa3f0a92c622 GIT binary patch literal 8567 zcmeHN`CC)x);)+ytu3@yD@CT;ic%{O3o0_k5gG%gEv*z8;)D^yAcQdif?8)q1qC7@ z(IQX>24x6gik8Y05)fn_0s;xh5FlYr$lZr~zki_5)93pIe&C#(=kT7r_q+DmYaMd! zhr^Dae!THx1VKK0fv6D=!L2Xc1Ue2F`5&a_B((>1}{?(mV+u77{Gv)UMQj{JoQ|+|c zM(I>rdOlgzU;sfN;f$h?;pY6ey6A`2Yazq!`S?^z^h3@%*~)e3$>y%2;EDg9Vu&0w z&j%Yz)!=eW%CDUCE$7#ur-_7PE8zI>uT@TPK<<6Cd{{2QG76R(VVMh->2P@>{6o_a zbE4_#FGGzPgz0XY)Wq%OuITq)7UezXjw<#c6mTW1)aK>sE+Jly;_NkG#ttHO34*kZ{u`R z$#MNjCu6JMJ#m4&*qJOM$KP|yVP=w)u3GRRlleKv%Nt-pu~@8crHee=4;jRGHpuF* zY&@oPhiJCK@?~IO#V0!EMiwMt?Q0Fg66b85v~0ngDjziQD%tJq?5wl%?9b^=j5x1S zs-I*4LG*9ipo<)$(P&x4V@03n?cSc~MfLHLJ!t877tJ3@F!L-D1a8G$*3^G+X|48Y zA=7H8t2hiTi<ir)|3m>dh^*%-4UgA8aRFPMQ9I&Lpc96W3_ za4&f1BT;g%K1;P#bU zkcW-!g@Gr{xczZx5h&tX94}gF9yZq58Ca=5)RHaQATf-Rztw|KbnGL;$4Y0qM<5jL zbUWE1pu5CxzNEX9Cegso?%iPW>z%LmUp_VQ{*Be(!;3);IOBndN<(@Y-42P-EZ;0b z_GAR}O*#Ecim=*HHCs87-{QsC;qz0)O`UlEt|Gs{={X6z&O6aFfsf(Y>hAKb8Y`Bv zCi*H#fBv>+=xu5xe_l~gP~brk?6guTWN5nbkv0nwJ1SIYJ^UPiSUNwfh6I1JVjWWd z#KgV8B-Qb@@Xt$Y8}rF6k-ck)Rd2M3Oh|xsBX@Lkl-qk**F5n3U(elgx8Q=HKg7dC z6_q+Oro289A!d+*dM|08h8=Iq^Kt2(Z{~;_@EF0>&o_D9ozXxBKSFEg@+%5e=Lh%5 zS==ptetu|$jvhT~eyZvY!1(1UoWpGc<)8Yv{Z}-d@pwLd9v_5x^YoWz=BI0uYS~yU z&K%k^FE8&gmm5(WX@I#Z94!9OIJxWz?Hw;8*7hWs*CwlFrjAu+DxoT|}})0GgdoG(3xZLBtCk3^%Z zO4gvir{dWPqrS@9br-ellkBEjH%VADf1$0ccBG)g-<{b7Xh?TXPI%&yA%>RbKl7S; zisIQyS|V%6CDrK{(Hhg8eSCbXHz#_;O%1nXkm^{B?Z@|3+%}XhJ;rFe8e)?|R~EUs zxVYFWhX|6Fd^5f-^l2uGHz!V}2(2Wiram;`;%-NcoMi0sJ31|*tMsjCYloXN`L1P? z_iI^pHc-uoVRzAktuE>Pg?+K)K{K!%hrn`#ZX{rp!CMF{=Cu!-6O` zNL?5!#+wq(*4}sZV)T|@kyf>-8lz^q65pmek^rB$&N|?r$j;X*k>GH6 z(%dwMmx4C-^=(;I_6sBNZMh`U+uskm-`bAGq|KXsQ!?x+t$}rAMJ=UfB8AwJB8r*` zDJ;CFP+ph-iVznKXW;>X#6tEEg}uOBV1Qe?U<@py>G%4=Djl0p-vm?lgt4w-l45qk zO2VWx06I;Di;^yfuA&gWPew|@T1?4y+8CFl-pmWG!>S_F52rlvX-xMnzx?SCLW32b|Yx%Z)1fWvBxI?@`KT?MNP(U{7j z7R0c+p#IT**$txNYs>ENKER+fdZt(}qW`Yd{9vlAe!o^4kr&NXPIp)UbEKG?bpbg= z^y!L{=428{g>FD?NrcQie7xtmSE=w$B(Hm zPgTd2%#=#I-q*Si?C!rfSt-_+hC7M{$%%F|ofd#T{^S5(_DC!0j3XiXO(*)O4^J|@ z3X>vd$9v~S1L(;=raElKv0&_}s0PTx&(T&b*Rc&h7w0>*Z%mMENdn5z*?w#f@H!*Q zvsnDjg&?T8zfCrPp+`6px{hmF_1`g~tMK74DV#YDT40lp0Br;u-rf7#a}Tb0wMhME zJRX1f6P<=0Zv-jcML;osi=17$Yny9UZAbTX!TOqSvXwDll4Syn2I%6^-R z983H+9mefP4os_ztR!Sl5Ug#A(8Vy!@4?fMM8E{T%Th}}?_om6<6 z)KR7XH`L{xD>;)|qgLZd&WymQ4xX|kgc8*AUGik&)TbL)Bd=5_ZR=NfWgqru6k9zz z!m&gVia8HC2Y+c78c?GhI~tcQXlE7_sGEo*a?ji+JGtIt_-#(N z?WTYAFYLXX7t&xp#V0PB<0e7XJbH~skbb^IahGChuqW z=dzW)fVaShM>%sljZ=bun(hh{b<$NztM^wonFsY(0q;<4vO4WiVE4xp#8)@P zRsq!nwI07R076>e-aVNBGsGAMT=$2$bp+cNdvB;AC~sV}_B++msX9g*J6hzY9c>ue zdfbg0* zj|0AOKEzXBP>*<2B?>V>zoeLqYIq7l{rcM5}=w3%j1jPVI z+BCZRnQOKOT{#s2C7evdL=9bHt42szzGqlheyO<3m!DwDAMY)4?xv(M!6IKqgdWZr~}ayRI@eX6vPt&y{Gz})Y0CK>I2{QyshMxECHFg z(5_z?Jj|kgc)|n{m=lJT#e;f7#p7IiOIZSNblQ_APu|J^84PqzrZj_eXQrp8dxSLo zg0gcufz4`e&cu$rOT#C61itygYOJvDWs4VWv?ooKm7l-U)YKF;D_KP!o}%If)shJq zB5U2@-FqSEP-_-SuV=R%d0zF~nst+XhN|7T1|D4%2?5ukT3a>Oj!tr&?@k=3xTTxe zc-Y1iWN4o^VUXGCl)NFXa&t%VFkh8;}h%FvFv@p3K6VCrq5 zhW+^Y=STCu6$k`wh3Afg+T3IYlf({%^?FULV%)^DXh-g8K@BQOV3v{w>mQ*~0V>@faZU-|>G~*jj4MI;T6+b!t2V zr@UU&sUc^Khl6@xW-jSY)$*anTo?`|)A`u~P~xiJi5ELS`+`=zd&8{gn>zai zUrjrCy+R?uV*Jj4ZwYDfOuV+vSbWWx^*x}_!oRbS39OD{ehA(dTW>_u$U~(DdYL;> zq1)Kq%>r3EP_r$&w)cu*S(9u@^FenZXHy~KurLD8|J2BX^6XzpEx{e8Y! zu?aA7M4NOCQhyi4c?KtZ;ys8Vvm4r&!*OWN4Erc5sGFJV(ZYCwJ!8$fEvLY>q4o-- z3u;I~@6LXq)C20O0RG&QVF}vX#G`P#W#_s5u#G&0JOe9G)6lyEW^!OCgKfrB0V*uK zYwpRVB5Vth4mz8}_K2El;)2e6vl&KX52~mWQTK_$6O~ZS*+h0r=~xJN{Li%%P$lWm z3z#{jfAMGm6aGG8w)aYIhkx7Ka6F`1R9c*@xH$p@&Dcps?ee#P+hSX^F%;z>)hJU{5p_POGs~tnJqv=MB=89SGotc?17S5X_!$%-Ml}uuBLRzzs(KlRryRY+ zrpr?e1$jP=4V(bc>MV6+FdV&8`vrCCgI-Y8R}t^883%RvaR&ZKjXf(j0+K>Yg8p*? zTqpc2zm{Gu!7>V#8)2CX{)TZ_hRr_+8~Mh`V)$ObX7sxN|KMZ(KbH { page, }) => { /* + Test case: EPMLSOPKET-12967 for Open RXN v2000 file with 'S-Group Properties Type = Multiple group Multi.zip Test case related to issue: https://github.com/epam/ketcher/issues/2389 Description: Open file with S-groups (with Unsupported S-group type GEN) and see that brackets in place for all S-Groups except DAT */ await openFileAndAddToCanvas( - 'structure-with-s-groups-with-unsupported-s-group-type.rxn', + 'RXN/structure-with-s-groups-with-unsupported-s-group-type-V2000.rxn', page, ); }); diff --git a/ketcher-autotests/tests/test-data/RXN/reaction-with-atom-and-bond-properties-saved.rxn b/ketcher-autotests/tests/test-data/RXN/reaction-with-atom-and-bond-properties-saved.rxn new file mode 100644 index 0000000000..617b6621a5 --- /dev/null +++ b/ketcher-autotests/tests/test-data/RXN/reaction-with-atom-and-bond-properties-saved.rxn @@ -0,0 +1,23 @@ +$RXN + + -INDIGO- 0904230127 + + 1 0 +$MOL + + -INDIGO-09042301272D + + 6 6 0 0 0 0 0 0 0 0999 V2000 + 13.8348 -7.5001 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.5652 -7.4996 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.7016 -7.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.5652 -8.5005 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.8348 -8.5050 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0 + 14.7038 -9.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3 1 2 0 0 0 0 + 4 2 3 0 0 0 0 + 1 5 1 0 0 0 0 + 2 3 1 0 0 0 0 + 5 6 6 0 0 0 0 + 6 4 1 0 0 0 0 +M END diff --git a/ketcher-autotests/tests/test-data/RXN/reaction-with-several-components-v3000.rxn b/ketcher-autotests/tests/test-data/RXN/reaction-with-several-components-v3000.rxn new file mode 100644 index 0000000000..d7188f65c3 --- /dev/null +++ b/ketcher-autotests/tests/test-data/RXN/reaction-with-several-components-v3000.rxn @@ -0,0 +1,264 @@ +$RXN V3000 + + -INDIGO- 0317231310 + +M V30 COUNTS 1 1 +M V30 BEGIN REACTANT +M V30 BEGIN CTAB +M V30 COUNTS 49 48 3 0 0 +M V30 BEGIN ATOM +M V30 1 C -19.6081 -8.52501 0.0 0 +M V30 2 C -18.7421 -9.02502 0.0 0 +M V30 3 C -17.8761 -8.52501 0.0 0 +M V30 4 C -17.0101 -9.02502 0.0 0 +M V30 5 C -16.1441 -8.52501 0.0 0 +M V30 6 C -15.278 -9.02502 0.0 0 +M V30 7 C -14.412 -8.52501 0.0 0 +M V30 8 C -13.546 -9.02502 0.0 0 +M V30 9 C -12.68 -8.52501 0.0 0 +M V30 10 C -16.1441 -7.52497 0.0 0 +M V30 11 C -17.0101 -7.02495 0.0 0 +M V30 12 C -17.0101 -6.02503 0.0 0 +M V30 13 C -17.8761 -5.52501 0.0 0 +M V30 14 C -17.8761 -4.52498 0.0 0 +M V30 15 C -18.7421 -6.02503 0.0 0 +M V30 16 C -18.7421 -7.02495 0.0 0 +M V30 17 C -19.6081 -5.52501 0.0 0 +M V30 18 C -20.4742 -6.02503 0.0 0 +M V30 19 C -21.3402 -5.52501 0.0 0 +M V30 20 C -17.0101 -9.02502 0.0 0 +M V30 21 C -17.8761 -8.52501 0.0 0 +M V30 22 C -16.1441 -8.52501 0.0 0 +M V30 23 C -15.278 -9.02502 0.0 0 +M V30 24 C -14.412 -8.52501 0.0 0 +M V30 25 C -17.0101 -7.02495 0.0 0 +M V30 26 C -16.1441 -7.52497 0.0 0 +M V30 27 C -17.0101 -6.02503 0.0 0 +M V30 28 C -17.8761 -5.52501 0.0 0 +M V30 29 C -17.8761 -4.52498 0.0 0 +M V30 30 C -18.7421 -6.02503 0.0 0 +M V30 31 C -18.7421 -7.02495 0.0 0 +M V30 32 C -19.6081 -5.52501 0.0 0 +M V30 33 C -20.4742 -6.02503 0.0 0 +M V30 34 C -21.3402 -5.52501 0.0 0 +M V30 35 C -17.0101 -9.02502 0.0 0 +M V30 36 C -17.8761 -8.52501 0.0 0 +M V30 37 C -16.1441 -8.52501 0.0 0 +M V30 38 C -15.278 -9.02502 0.0 0 +M V30 39 C -14.412 -8.52501 0.0 0 +M V30 40 C -17.0101 -7.02495 0.0 0 +M V30 41 C -16.1441 -7.52497 0.0 0 +M V30 42 C -17.0101 -6.02503 0.0 0 +M V30 43 C -17.8761 -5.52501 0.0 0 +M V30 44 C -17.8761 -4.52498 0.0 0 +M V30 45 C -18.7421 -6.02503 0.0 0 +M V30 46 C -18.7421 -7.02495 0.0 0 +M V30 47 C -19.6081 -5.52501 0.0 0 +M V30 48 C -20.4742 -6.02503 0.0 0 +M V30 49 C -21.3402 -5.52501 0.0 0 +M V30 END ATOM +M V30 BEGIN BOND +M V30 1 1 1 2 +M V30 2 1 3 4 +M V30 3 1 4 5 +M V30 4 1 5 6 +M V30 5 1 6 7 +M V30 6 1 7 8 +M V30 7 1 8 9 +M V30 8 1 5 10 +M V30 9 1 10 11 +M V30 10 1 11 12 +M V30 11 1 12 13 +M V30 12 1 13 14 +M V30 13 1 13 15 +M V30 14 1 15 16 +M V30 15 1 15 17 +M V30 16 1 17 18 +M V30 17 1 18 19 +M V30 18 1 3 24 +M V30 19 1 21 20 +M V30 20 1 20 22 +M V30 21 1 22 23 +M V30 22 1 23 24 +M V30 23 1 22 26 +M V30 24 1 26 25 +M V30 25 1 25 27 +M V30 26 1 27 28 +M V30 27 1 28 29 +M V30 28 1 28 30 +M V30 29 1 30 31 +M V30 30 1 30 32 +M V30 31 1 32 33 +M V30 32 1 33 34 +M V30 33 1 21 39 +M V30 34 1 36 35 +M V30 35 1 35 37 +M V30 36 1 37 38 +M V30 37 1 38 39 +M V30 38 1 37 41 +M V30 39 1 41 40 +M V30 40 1 40 42 +M V30 41 1 42 43 +M V30 42 1 43 44 +M V30 43 1 43 45 +M V30 44 1 45 46 +M V30 45 1 45 47 +M V30 46 1 47 48 +M V30 47 1 48 49 +M V30 48 1 36 2 +M V30 END BOND +M V30 BEGIN SGROUP +M V30 1 SRU 1 ATOMS=(11 5 11 10 12 13 14 15 16 17 18 19) BRKXYZ=(9 -21.64019- +M V30 0 -9.275015 0.000000 -21.640190 -8.275015 0.000000 0.000000 0.000000 0- +M V30 .000000) BRKXYZ=(9 -15.844058 -8.275015 0.000000 -15.844058 -9.275015 - +M V30 0.000000 0.000000 0.000000 0.000000) CONNECT=HT LABEL=n +M V30 2 MUL 2 ATOMS=(45 4 3 5 6 7 11 10 12 13 14 15 16 17 18 19 20 21 22 23 - +M V30 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 4- +M V30 7 48 49) BRKXYZ=(9 -21.840189 -9.525024 0.000000 -21.840189 -4.024976 - +M V30 0.000000 0.000000 0.000000 0.000000) BRKXYZ=(9 -13.912013 -4.024976 0.- +M V30 000000 -13.912013 -9.525024 0.000000 0.000000 0.000000 0.000000) PATOM- +M V30 S=(15 4 3 5 6 7 11 10 12 13 14 15 16 17 18 19) MULT=3 +M V30 3 SRU 3 ATOMS=(5 15 13 14 16 17) BRKXYZ=(9 -17.576099 -5.275023 0.0000- +M V30 00 -17.576099 -6.275023 0.000000 0.000000 0.000000 0.000000) BRKXYZ=(9- +M V30 -19.908144 -6.275023 0.000000 -19.908144 -5.275023 0.000000 0.000000 - +M V30 0.000000 0.000000) CONNECT=HT LABEL=n +M V30 END SGROUP +M V30 END CTAB +M V30 END REACTANT +M V30 BEGIN PRODUCT +M V30 BEGIN CTAB +M V30 COUNTS 49 48 6 0 0 +M V30 BEGIN ATOM +M V30 1 C -7.18799 -8.52501 0.0 0 +M V30 2 C -6.32196 -9.02502 0.0 0 +M V30 3 C -5.45594 -8.52501 0.0 0 +M V30 4 C -4.58992 -9.02502 0.0 0 +M V30 5 C -3.7239 -8.52501 0.0 0 +M V30 6 C -2.85788 -9.02502 0.0 0 +M V30 7 C -1.99185 -8.52501 0.0 0 +M V30 8 C -1.12583 -9.02502 0.0 0 +M V30 9 C -0.25981 -8.52501 0.0 0 +M V30 10 C -3.7239 -7.52497 0.0 0 +M V30 11 C -4.58992 -7.02495 0.0 0 +M V30 12 C -4.58992 -6.02503 0.0 0 +M V30 13 C -5.45594 -5.52501 0.0 0 +M V30 14 C -5.45594 -4.52498 0.0 0 +M V30 15 C -6.32196 -6.02503 0.0 0 +M V30 16 C -6.32196 -7.02495 0.0 0 +M V30 17 C -7.18799 -5.52501 0.0 0 +M V30 18 C -8.05401 -6.02503 0.0 0 +M V30 19 C -8.92003 -5.52501 0.0 0 +M V30 20 C -1.99185 -8.52501 0.0 0 +M V30 21 C -5.45594 -8.52501 0.0 0 +M V30 22 C -2.85788 -9.02502 0.0 0 +M V30 23 C -3.7239 -8.52501 0.0 0 +M V30 24 C -4.58992 -9.02502 0.0 0 +M V30 25 C -3.7239 -7.52497 0.0 0 +M V30 26 C -4.58992 -7.02495 0.0 0 +M V30 27 C -4.58992 -6.02503 0.0 0 +M V30 28 C -5.45594 -5.52501 0.0 0 +M V30 29 C -5.45594 -4.52498 0.0 0 +M V30 30 C -6.32196 -6.02503 0.0 0 +M V30 31 C -6.32196 -7.02495 0.0 0 +M V30 32 C -7.18799 -5.52501 0.0 0 +M V30 33 C -8.05401 -6.02503 0.0 0 +M V30 34 C -8.92003 -5.52501 0.0 0 +M V30 35 C -1.99185 -8.52501 0.0 0 +M V30 36 C -5.45594 -8.52501 0.0 0 +M V30 37 C -2.85788 -9.02502 0.0 0 +M V30 38 C -3.7239 -8.52501 0.0 0 +M V30 39 C -4.58992 -9.02502 0.0 0 +M V30 40 C -3.7239 -7.52497 0.0 0 +M V30 41 C -4.58992 -7.02495 0.0 0 +M V30 42 C -4.58992 -6.02503 0.0 0 +M V30 43 C -5.45594 -5.52501 0.0 0 +M V30 44 C -5.45594 -4.52498 0.0 0 +M V30 45 C -6.32196 -6.02503 0.0 0 +M V30 46 C -6.32196 -7.02495 0.0 0 +M V30 47 C -7.18799 -5.52501 0.0 0 +M V30 48 C -8.05401 -6.02503 0.0 0 +M V30 49 C -8.92003 -5.52501 0.0 0 +M V30 END ATOM +M V30 BEGIN BOND +M V30 1 1 1 2 +M V30 2 1 3 2 +M V30 3 1 3 4 +M V30 4 1 4 5 +M V30 5 1 5 6 +M V30 6 1 6 7 +M V30 7 1 8 9 +M V30 8 1 5 10 +M V30 9 1 10 11 +M V30 10 1 11 12 +M V30 11 1 12 13 +M V30 12 1 13 14 +M V30 13 1 13 15 +M V30 14 1 15 16 +M V30 15 1 15 17 +M V30 16 1 17 18 +M V30 17 1 18 19 +M V30 18 1 7 21 +M V30 19 1 21 24 +M V30 20 1 24 23 +M V30 21 1 23 22 +M V30 22 1 22 20 +M V30 23 1 23 25 +M V30 24 1 25 26 +M V30 25 1 26 27 +M V30 26 1 27 28 +M V30 27 1 28 29 +M V30 28 1 28 30 +M V30 29 1 30 31 +M V30 30 1 30 32 +M V30 31 1 32 33 +M V30 32 1 33 34 +M V30 33 1 20 36 +M V30 34 1 36 39 +M V30 35 1 39 38 +M V30 36 1 38 37 +M V30 37 1 37 35 +M V30 38 1 38 40 +M V30 39 1 40 41 +M V30 40 1 41 42 +M V30 41 1 42 43 +M V30 42 1 43 44 +M V30 43 1 43 45 +M V30 44 1 45 46 +M V30 45 1 45 47 +M V30 46 1 47 48 +M V30 47 1 48 49 +M V30 48 1 35 8 +M V30 END BOND +M V30 BEGIN SGROUP +M V30 1 SRU 1 ATOMS=(5 17 13 15 16 14) BRKXYZ=(9 -7.487987 -6.275023 0.00000- +M V30 0 -7.487987 -5.275023 0.000000 0.000000 0.000000 0.000000) BRKXYZ=(9 -- +M V30 5.155943 -5.275023 0.000000 -5.155943 -6.275023 0.000000 0.000000 0.00- +M V30 0000 0.000000) CONNECT=HT LABEL=n +M V30 2 MUL 2 ATOMS=(45 7 3 6 5 4 10 11 12 13 14 15 16 17 18 19 20 21 22 23 - +M V30 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 4- +M V30 7 48 49) BRKXYZ=(9 -9.420031 -9.525024 0.000000 -9.420031 -4.024976 0.- +M V30 000000 0.000000 0.000000 0.000000) BRKXYZ=(9 -1.491855 -4.024976 0.000- +M V30 000 -1.491855 -9.525024 0.000000 0.000000 0.000000 0.000000) PATOMS=(1- +M V30 5 7 3 6 5 4 10 11 12 13 14 15 16 17 18 19) MULT=3 +M V30 3 SRU 3 ATOMS=(11 5 10 11 12 13 14 15 16 17 18 19) BRKXYZ=(9 -9.220031- +M V30 -9.275015 0.000000 -9.220031 -8.275015 0.000000 0.000000 0.000000 0.0- +M V30 00000) BRKXYZ=(9 -3.423899 -8.275015 0.000000 -3.423899 -9.275015 0.00- +M V30 0000 0.000000 0.000000 0.000000) CONNECT=HT LABEL=n +M V30 4 DAT 4 ATOMS=(1 14) BRKXYZ=(9 0.000000 0.000000 0.000000 0.000000 0.0- +M V30 00000 0.000000 0.000000 0.000000 0.000000) BRKXYZ=(9 0.000000 0.000000- +M V30 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000) FIELD- +M V30 DISP=" 0.0000 0.0000 DA ALL 1 1 " FIELDDATA="Cl-Br- +M V30 " +M V30 5 GEN 5 ATOMS=(17 3 2 4 5 6 7 8 10 11 12 13 14 15 16 17 18 19) BRKXYZ=- +M V30 (9 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.00- +M V30 0000 0.000000) BRKXYZ=(9 0.000000 0.000000 0.000000 0.000000 0.000000 - +M V30 0.000000 0.000000 0.000000 0.000000) +M V30 6 DAT 6 ATOMS=(7 2 3 4 5 6 7 8) CBONDS=(6 2 3 4 5 6 18) BRKXYZ=(9 0.00- +M V30 0000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.- +M V30 000000) BRKXYZ=(9 0.000000 0.000000 0.000000 0.000000 0.000000 0.00000- +M V30 0 0.000000 0.000000 0.000000) FIELDDISP=" 0.0000 0.0000 DA - +M V30 ALL 1 1 " FIELDDATA="C" +M V30 END SGROUP +M V30 END CTAB +M V30 END PRODUCT +M END diff --git a/ketcher-autotests/tests/test-data/RXN/reaction-with-several-components.rxn b/ketcher-autotests/tests/test-data/RXN/reaction-with-several-components.rxn new file mode 100644 index 0000000000..58f2035cf9 --- /dev/null +++ b/ketcher-autotests/tests/test-data/RXN/reaction-with-several-components.rxn @@ -0,0 +1,154 @@ +$RXN V3000 + + ChemDraw12232218102D + +M V30 COUNTS 6 2 +M V30 BEGIN REACTANT +M V30 BEGIN CTAB +M V30 COUNTS 10 10 0 0 0 +M V30 BEGIN ATOM +M V30 1 C -0.410997 0.715841 0.000000 0 +M V30 2 C 0.825429 0.002476 0.000000 0 +M V30 3 C 0.414571 0.715565 0.000000 0 +M V30 4 C 0.412646 -0.712814 0.000000 0 +M V30 5 C -0.825430 -0.002200 0.000000 0 +M V30 6 C -0.408796 -0.714189 0.000000 0 +M V30 7 C -0.823505 1.430305 0.000000 0 +M V30 8 C -0.818554 -1.430305 0.000000 0 +M V30 9 C -1.650447 -0.004399 0.000000 0 +M V30 10 C 1.650447 0.002200 0.000000 0 +M V30 END ATOM +M V30 BEGIN BOND +M V30 1 2 3 1 +M V30 2 2 4 2 +M V30 3 1 1 5 +M V30 4 1 2 3 +M V30 5 2 5 6 +M V30 6 1 6 4 +M V30 7 1 1 7 +M V30 8 1 6 8 +M V30 9 1 5 9 +M V30 10 1 2 10 +M V30 END BOND +M V30 END CTAB +M V30 BEGIN CTAB +M V30 COUNTS 10 10 0 0 0 +M V30 BEGIN ATOM +M V30 1 C -0.410997 0.715841 0.000000 0 +M V30 2 C 0.825429 0.002476 0.000000 0 +M V30 3 C 0.414571 0.715565 0.000000 0 +M V30 4 C 0.412646 -0.712814 0.000000 0 +M V30 5 C -0.825430 -0.002200 0.000000 0 +M V30 6 C -0.408796 -0.714189 0.000000 0 +M V30 7 C -0.823505 1.430305 0.000000 0 +M V30 8 C -0.818554 -1.430305 0.000000 0 +M V30 9 C -1.650447 -0.004399 0.000000 0 +M V30 10 C 1.650447 0.002200 0.000000 0 +M V30 END ATOM +M V30 BEGIN BOND +M V30 1 2 3 1 +M V30 2 2 4 2 +M V30 3 1 1 5 +M V30 4 1 2 3 +M V30 5 2 5 6 +M V30 6 1 6 4 +M V30 7 1 1 7 +M V30 8 1 6 8 +M V30 9 1 5 9 +M V30 10 1 2 10 +M V30 END BOND +M V30 END CTAB +M V30 BEGIN CTAB +M V30 COUNTS 1 0 0 0 0 +M V30 BEGIN ATOM +M V30 1 O 0.000000 0.000000 0.000000 0 +M V30 END ATOM +M V30 END CTAB +M V30 BEGIN CTAB +M V30 COUNTS 1 0 0 0 0 +M V30 BEGIN ATOM +M V30 1 O 0.000000 0.000000 0.000000 0 +M V30 END ATOM +M V30 END CTAB +M V30 BEGIN CTAB +M V30 COUNTS 2 1 0 0 0 +M V30 BEGIN ATOM +M V30 1 O -0.412508 0.000000 0.000000 0 CHG=2 +M V30 2 O 0.412508 0.000000 0.000000 0 +M V30 END ATOM +M V30 BEGIN BOND +M V30 1 2 1 2 +M V30 END BOND +M V30 END CTAB +M V30 BEGIN CTAB +M V30 COUNTS 2 1 0 0 0 +M V30 BEGIN ATOM +M V30 1 O -0.412508 0.000000 0.000000 0 +M V30 2 O 0.412508 0.000000 0.000000 0 +M V30 END ATOM +M V30 BEGIN BOND +M V30 1 2 1 2 +M V30 END BOND +M V30 END CTAB +M V30 END REACTANT +M V30 BEGIN PRODUCT +M V30 BEGIN CTAB +M V30 COUNTS 11 11 0 0 0 +M V30 BEGIN ATOM +M V30 1 C 0.208865 0.715841 0.000000 0 +M V30 2 C 1.445293 0.002476 0.000000 0 +M V30 3 C 1.034434 0.715565 0.000000 0 +M V30 4 C 1.032509 -0.712814 0.000000 0 +M V30 5 C -0.205565 -0.002200 0.000000 0 +M V30 6 C 0.211067 -0.714189 0.000000 0 +M V30 7 C -0.198690 -1.430305 0.000000 0 +M V30 8 C -1.030584 -0.004399 0.000000 0 +M V30 9 O -1.445293 0.708690 0.000000 0 +M V30 10 O -1.441169 -0.720239 0.000000 0 +M V30 11 C -0.203641 1.430305 0.000000 0 +M V30 END ATOM +M V30 BEGIN BOND +M V30 1 2 3 1 +M V30 2 2 4 2 +M V30 3 1 1 5 +M V30 4 1 2 3 +M V30 5 2 5 6 +M V30 6 1 6 4 +M V30 7 1 6 7 +M V30 8 1 5 8 +M V30 9 2 8 9 +M V30 10 1 8 10 +M V30 11 1 1 11 +M V30 END BOND +M V30 END CTAB +M V30 BEGIN CTAB +M V30 COUNTS 11 11 0 0 0 +M V30 BEGIN ATOM +M V30 1 C 0.208865 0.715841 0.000000 0 +M V30 2 C 1.445293 0.002476 0.000000 0 +M V30 3 C 1.034434 0.715565 0.000000 0 +M V30 4 C 1.032509 -0.712814 0.000000 0 +M V30 5 C -0.205565 -0.002200 0.000000 0 +M V30 6 C 0.211067 -0.714189 0.000000 0 +M V30 7 C -0.198690 -1.430305 0.000000 0 +M V30 8 C -1.030584 -0.004399 0.000000 0 +M V30 9 O -1.445293 0.708690 0.000000 0 +M V30 10 O -1.441169 -0.720239 0.000000 0 +M V30 11 C -0.203641 1.430305 0.000000 0 +M V30 END ATOM +M V30 BEGIN BOND +M V30 1 2 3 1 +M V30 2 2 4 2 +M V30 3 1 1 5 +M V30 4 1 2 3 +M V30 5 2 5 6 +M V30 6 1 6 4 +M V30 7 1 6 7 +M V30 8 1 5 8 +M V30 9 2 8 9 +M V30 10 1 8 10 +M V30 11 1 1 11 +M V30 END BOND +M V30 END CTAB +M V30 END PRODUCT +M END diff --git a/ketcher-autotests/tests/test-data/structure-with-s-groups-with-unsupported-s-group-type.rxn b/ketcher-autotests/tests/test-data/RXN/structure-with-s-groups-with-unsupported-s-group-type-V2000.rxn similarity index 100% rename from ketcher-autotests/tests/test-data/structure-with-s-groups-with-unsupported-s-group-type.rxn rename to ketcher-autotests/tests/test-data/RXN/structure-with-s-groups-with-unsupported-s-group-type-V2000.rxn diff --git a/ketcher-autotests/tests/test-data/RXN/structure-with-s-groups-with-unsupported-s-group-type-V3000.rxn b/ketcher-autotests/tests/test-data/RXN/structure-with-s-groups-with-unsupported-s-group-type-V3000.rxn new file mode 100644 index 0000000000..d7188f65c3 --- /dev/null +++ b/ketcher-autotests/tests/test-data/RXN/structure-with-s-groups-with-unsupported-s-group-type-V3000.rxn @@ -0,0 +1,264 @@ +$RXN V3000 + + -INDIGO- 0317231310 + +M V30 COUNTS 1 1 +M V30 BEGIN REACTANT +M V30 BEGIN CTAB +M V30 COUNTS 49 48 3 0 0 +M V30 BEGIN ATOM +M V30 1 C -19.6081 -8.52501 0.0 0 +M V30 2 C -18.7421 -9.02502 0.0 0 +M V30 3 C -17.8761 -8.52501 0.0 0 +M V30 4 C -17.0101 -9.02502 0.0 0 +M V30 5 C -16.1441 -8.52501 0.0 0 +M V30 6 C -15.278 -9.02502 0.0 0 +M V30 7 C -14.412 -8.52501 0.0 0 +M V30 8 C -13.546 -9.02502 0.0 0 +M V30 9 C -12.68 -8.52501 0.0 0 +M V30 10 C -16.1441 -7.52497 0.0 0 +M V30 11 C -17.0101 -7.02495 0.0 0 +M V30 12 C -17.0101 -6.02503 0.0 0 +M V30 13 C -17.8761 -5.52501 0.0 0 +M V30 14 C -17.8761 -4.52498 0.0 0 +M V30 15 C -18.7421 -6.02503 0.0 0 +M V30 16 C -18.7421 -7.02495 0.0 0 +M V30 17 C -19.6081 -5.52501 0.0 0 +M V30 18 C -20.4742 -6.02503 0.0 0 +M V30 19 C -21.3402 -5.52501 0.0 0 +M V30 20 C -17.0101 -9.02502 0.0 0 +M V30 21 C -17.8761 -8.52501 0.0 0 +M V30 22 C -16.1441 -8.52501 0.0 0 +M V30 23 C -15.278 -9.02502 0.0 0 +M V30 24 C -14.412 -8.52501 0.0 0 +M V30 25 C -17.0101 -7.02495 0.0 0 +M V30 26 C -16.1441 -7.52497 0.0 0 +M V30 27 C -17.0101 -6.02503 0.0 0 +M V30 28 C -17.8761 -5.52501 0.0 0 +M V30 29 C -17.8761 -4.52498 0.0 0 +M V30 30 C -18.7421 -6.02503 0.0 0 +M V30 31 C -18.7421 -7.02495 0.0 0 +M V30 32 C -19.6081 -5.52501 0.0 0 +M V30 33 C -20.4742 -6.02503 0.0 0 +M V30 34 C -21.3402 -5.52501 0.0 0 +M V30 35 C -17.0101 -9.02502 0.0 0 +M V30 36 C -17.8761 -8.52501 0.0 0 +M V30 37 C -16.1441 -8.52501 0.0 0 +M V30 38 C -15.278 -9.02502 0.0 0 +M V30 39 C -14.412 -8.52501 0.0 0 +M V30 40 C -17.0101 -7.02495 0.0 0 +M V30 41 C -16.1441 -7.52497 0.0 0 +M V30 42 C -17.0101 -6.02503 0.0 0 +M V30 43 C -17.8761 -5.52501 0.0 0 +M V30 44 C -17.8761 -4.52498 0.0 0 +M V30 45 C -18.7421 -6.02503 0.0 0 +M V30 46 C -18.7421 -7.02495 0.0 0 +M V30 47 C -19.6081 -5.52501 0.0 0 +M V30 48 C -20.4742 -6.02503 0.0 0 +M V30 49 C -21.3402 -5.52501 0.0 0 +M V30 END ATOM +M V30 BEGIN BOND +M V30 1 1 1 2 +M V30 2 1 3 4 +M V30 3 1 4 5 +M V30 4 1 5 6 +M V30 5 1 6 7 +M V30 6 1 7 8 +M V30 7 1 8 9 +M V30 8 1 5 10 +M V30 9 1 10 11 +M V30 10 1 11 12 +M V30 11 1 12 13 +M V30 12 1 13 14 +M V30 13 1 13 15 +M V30 14 1 15 16 +M V30 15 1 15 17 +M V30 16 1 17 18 +M V30 17 1 18 19 +M V30 18 1 3 24 +M V30 19 1 21 20 +M V30 20 1 20 22 +M V30 21 1 22 23 +M V30 22 1 23 24 +M V30 23 1 22 26 +M V30 24 1 26 25 +M V30 25 1 25 27 +M V30 26 1 27 28 +M V30 27 1 28 29 +M V30 28 1 28 30 +M V30 29 1 30 31 +M V30 30 1 30 32 +M V30 31 1 32 33 +M V30 32 1 33 34 +M V30 33 1 21 39 +M V30 34 1 36 35 +M V30 35 1 35 37 +M V30 36 1 37 38 +M V30 37 1 38 39 +M V30 38 1 37 41 +M V30 39 1 41 40 +M V30 40 1 40 42 +M V30 41 1 42 43 +M V30 42 1 43 44 +M V30 43 1 43 45 +M V30 44 1 45 46 +M V30 45 1 45 47 +M V30 46 1 47 48 +M V30 47 1 48 49 +M V30 48 1 36 2 +M V30 END BOND +M V30 BEGIN SGROUP +M V30 1 SRU 1 ATOMS=(11 5 11 10 12 13 14 15 16 17 18 19) BRKXYZ=(9 -21.64019- +M V30 0 -9.275015 0.000000 -21.640190 -8.275015 0.000000 0.000000 0.000000 0- +M V30 .000000) BRKXYZ=(9 -15.844058 -8.275015 0.000000 -15.844058 -9.275015 - +M V30 0.000000 0.000000 0.000000 0.000000) CONNECT=HT LABEL=n +M V30 2 MUL 2 ATOMS=(45 4 3 5 6 7 11 10 12 13 14 15 16 17 18 19 20 21 22 23 - +M V30 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 4- +M V30 7 48 49) BRKXYZ=(9 -21.840189 -9.525024 0.000000 -21.840189 -4.024976 - +M V30 0.000000 0.000000 0.000000 0.000000) BRKXYZ=(9 -13.912013 -4.024976 0.- +M V30 000000 -13.912013 -9.525024 0.000000 0.000000 0.000000 0.000000) PATOM- +M V30 S=(15 4 3 5 6 7 11 10 12 13 14 15 16 17 18 19) MULT=3 +M V30 3 SRU 3 ATOMS=(5 15 13 14 16 17) BRKXYZ=(9 -17.576099 -5.275023 0.0000- +M V30 00 -17.576099 -6.275023 0.000000 0.000000 0.000000 0.000000) BRKXYZ=(9- +M V30 -19.908144 -6.275023 0.000000 -19.908144 -5.275023 0.000000 0.000000 - +M V30 0.000000 0.000000) CONNECT=HT LABEL=n +M V30 END SGROUP +M V30 END CTAB +M V30 END REACTANT +M V30 BEGIN PRODUCT +M V30 BEGIN CTAB +M V30 COUNTS 49 48 6 0 0 +M V30 BEGIN ATOM +M V30 1 C -7.18799 -8.52501 0.0 0 +M V30 2 C -6.32196 -9.02502 0.0 0 +M V30 3 C -5.45594 -8.52501 0.0 0 +M V30 4 C -4.58992 -9.02502 0.0 0 +M V30 5 C -3.7239 -8.52501 0.0 0 +M V30 6 C -2.85788 -9.02502 0.0 0 +M V30 7 C -1.99185 -8.52501 0.0 0 +M V30 8 C -1.12583 -9.02502 0.0 0 +M V30 9 C -0.25981 -8.52501 0.0 0 +M V30 10 C -3.7239 -7.52497 0.0 0 +M V30 11 C -4.58992 -7.02495 0.0 0 +M V30 12 C -4.58992 -6.02503 0.0 0 +M V30 13 C -5.45594 -5.52501 0.0 0 +M V30 14 C -5.45594 -4.52498 0.0 0 +M V30 15 C -6.32196 -6.02503 0.0 0 +M V30 16 C -6.32196 -7.02495 0.0 0 +M V30 17 C -7.18799 -5.52501 0.0 0 +M V30 18 C -8.05401 -6.02503 0.0 0 +M V30 19 C -8.92003 -5.52501 0.0 0 +M V30 20 C -1.99185 -8.52501 0.0 0 +M V30 21 C -5.45594 -8.52501 0.0 0 +M V30 22 C -2.85788 -9.02502 0.0 0 +M V30 23 C -3.7239 -8.52501 0.0 0 +M V30 24 C -4.58992 -9.02502 0.0 0 +M V30 25 C -3.7239 -7.52497 0.0 0 +M V30 26 C -4.58992 -7.02495 0.0 0 +M V30 27 C -4.58992 -6.02503 0.0 0 +M V30 28 C -5.45594 -5.52501 0.0 0 +M V30 29 C -5.45594 -4.52498 0.0 0 +M V30 30 C -6.32196 -6.02503 0.0 0 +M V30 31 C -6.32196 -7.02495 0.0 0 +M V30 32 C -7.18799 -5.52501 0.0 0 +M V30 33 C -8.05401 -6.02503 0.0 0 +M V30 34 C -8.92003 -5.52501 0.0 0 +M V30 35 C -1.99185 -8.52501 0.0 0 +M V30 36 C -5.45594 -8.52501 0.0 0 +M V30 37 C -2.85788 -9.02502 0.0 0 +M V30 38 C -3.7239 -8.52501 0.0 0 +M V30 39 C -4.58992 -9.02502 0.0 0 +M V30 40 C -3.7239 -7.52497 0.0 0 +M V30 41 C -4.58992 -7.02495 0.0 0 +M V30 42 C -4.58992 -6.02503 0.0 0 +M V30 43 C -5.45594 -5.52501 0.0 0 +M V30 44 C -5.45594 -4.52498 0.0 0 +M V30 45 C -6.32196 -6.02503 0.0 0 +M V30 46 C -6.32196 -7.02495 0.0 0 +M V30 47 C -7.18799 -5.52501 0.0 0 +M V30 48 C -8.05401 -6.02503 0.0 0 +M V30 49 C -8.92003 -5.52501 0.0 0 +M V30 END ATOM +M V30 BEGIN BOND +M V30 1 1 1 2 +M V30 2 1 3 2 +M V30 3 1 3 4 +M V30 4 1 4 5 +M V30 5 1 5 6 +M V30 6 1 6 7 +M V30 7 1 8 9 +M V30 8 1 5 10 +M V30 9 1 10 11 +M V30 10 1 11 12 +M V30 11 1 12 13 +M V30 12 1 13 14 +M V30 13 1 13 15 +M V30 14 1 15 16 +M V30 15 1 15 17 +M V30 16 1 17 18 +M V30 17 1 18 19 +M V30 18 1 7 21 +M V30 19 1 21 24 +M V30 20 1 24 23 +M V30 21 1 23 22 +M V30 22 1 22 20 +M V30 23 1 23 25 +M V30 24 1 25 26 +M V30 25 1 26 27 +M V30 26 1 27 28 +M V30 27 1 28 29 +M V30 28 1 28 30 +M V30 29 1 30 31 +M V30 30 1 30 32 +M V30 31 1 32 33 +M V30 32 1 33 34 +M V30 33 1 20 36 +M V30 34 1 36 39 +M V30 35 1 39 38 +M V30 36 1 38 37 +M V30 37 1 37 35 +M V30 38 1 38 40 +M V30 39 1 40 41 +M V30 40 1 41 42 +M V30 41 1 42 43 +M V30 42 1 43 44 +M V30 43 1 43 45 +M V30 44 1 45 46 +M V30 45 1 45 47 +M V30 46 1 47 48 +M V30 47 1 48 49 +M V30 48 1 35 8 +M V30 END BOND +M V30 BEGIN SGROUP +M V30 1 SRU 1 ATOMS=(5 17 13 15 16 14) BRKXYZ=(9 -7.487987 -6.275023 0.00000- +M V30 0 -7.487987 -5.275023 0.000000 0.000000 0.000000 0.000000) BRKXYZ=(9 -- +M V30 5.155943 -5.275023 0.000000 -5.155943 -6.275023 0.000000 0.000000 0.00- +M V30 0000 0.000000) CONNECT=HT LABEL=n +M V30 2 MUL 2 ATOMS=(45 7 3 6 5 4 10 11 12 13 14 15 16 17 18 19 20 21 22 23 - +M V30 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 4- +M V30 7 48 49) BRKXYZ=(9 -9.420031 -9.525024 0.000000 -9.420031 -4.024976 0.- +M V30 000000 0.000000 0.000000 0.000000) BRKXYZ=(9 -1.491855 -4.024976 0.000- +M V30 000 -1.491855 -9.525024 0.000000 0.000000 0.000000 0.000000) PATOMS=(1- +M V30 5 7 3 6 5 4 10 11 12 13 14 15 16 17 18 19) MULT=3 +M V30 3 SRU 3 ATOMS=(11 5 10 11 12 13 14 15 16 17 18 19) BRKXYZ=(9 -9.220031- +M V30 -9.275015 0.000000 -9.220031 -8.275015 0.000000 0.000000 0.000000 0.0- +M V30 00000) BRKXYZ=(9 -3.423899 -8.275015 0.000000 -3.423899 -9.275015 0.00- +M V30 0000 0.000000 0.000000 0.000000) CONNECT=HT LABEL=n +M V30 4 DAT 4 ATOMS=(1 14) BRKXYZ=(9 0.000000 0.000000 0.000000 0.000000 0.0- +M V30 00000 0.000000 0.000000 0.000000 0.000000) BRKXYZ=(9 0.000000 0.000000- +M V30 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000) FIELD- +M V30 DISP=" 0.0000 0.0000 DA ALL 1 1 " FIELDDATA="Cl-Br- +M V30 " +M V30 5 GEN 5 ATOMS=(17 3 2 4 5 6 7 8 10 11 12 13 14 15 16 17 18 19) BRKXYZ=- +M V30 (9 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.00- +M V30 0000 0.000000) BRKXYZ=(9 0.000000 0.000000 0.000000 0.000000 0.000000 - +M V30 0.000000 0.000000 0.000000 0.000000) +M V30 6 DAT 6 ATOMS=(7 2 3 4 5 6 7 8) CBONDS=(6 2 3 4 5 6 18) BRKXYZ=(9 0.00- +M V30 0000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.- +M V30 000000) BRKXYZ=(9 0.000000 0.000000 0.000000 0.000000 0.000000 0.00000- +M V30 0 0.000000 0.000000 0.000000) FIELDDISP=" 0.0000 0.0000 DA - +M V30 ALL 1 1 " FIELDDATA="C" +M V30 END SGROUP +M V30 END CTAB +M V30 END PRODUCT +M END diff --git a/ketcher-autotests/tests/test-data/RXN/structure-with-two-reaction-arrows-v2000-saved.rxn b/ketcher-autotests/tests/test-data/RXN/structure-with-two-reaction-arrows-v2000-saved.rxn new file mode 100644 index 0000000000..f66b45eed1 --- /dev/null +++ b/ketcher-autotests/tests/test-data/RXN/structure-with-two-reaction-arrows-v2000-saved.rxn @@ -0,0 +1,41 @@ +$RXN + + -INDIGO- 0904230658 + + 1 1 +$MOL + + -INDIGO-09042306582D + + 6 6 0 0 0 0 0 0 0 0999 V2000 + 13.8348 -7.5001 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.5652 -7.4996 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.7016 -7.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.5652 -8.5005 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.8348 -8.5050 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.7038 -9.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3 1 2 0 0 0 0 + 4 2 2 0 0 0 0 + 1 5 1 0 0 0 0 + 2 3 1 0 0 0 0 + 5 6 2 0 0 0 0 + 6 4 1 0 0 0 0 +M END +$MOL + + -INDIGO-09042306582D + + 6 6 0 0 0 0 0 0 0 0999 V2000 + 13.8348 -2.7251 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.5652 -2.7246 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.7016 -2.2250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.5652 -3.7255 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.8348 -3.7300 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.7038 -4.2250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3 1 2 0 0 0 0 + 4 2 2 0 0 0 0 + 1 5 1 0 0 0 0 + 2 3 1 0 0 0 0 + 5 6 2 0 0 0 0 + 6 4 1 0 0 0 0 +M END diff --git a/ketcher-autotests/tests/test-data/RXN/structure-with-two-reaction-arrows-v3000-saved.rxn b/ketcher-autotests/tests/test-data/RXN/structure-with-two-reaction-arrows-v3000-saved.rxn new file mode 100644 index 0000000000..f66b45eed1 --- /dev/null +++ b/ketcher-autotests/tests/test-data/RXN/structure-with-two-reaction-arrows-v3000-saved.rxn @@ -0,0 +1,41 @@ +$RXN + + -INDIGO- 0904230658 + + 1 1 +$MOL + + -INDIGO-09042306582D + + 6 6 0 0 0 0 0 0 0 0999 V2000 + 13.8348 -7.5001 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.5652 -7.4996 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.7016 -7.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.5652 -8.5005 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.8348 -8.5050 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.7038 -9.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3 1 2 0 0 0 0 + 4 2 2 0 0 0 0 + 1 5 1 0 0 0 0 + 2 3 1 0 0 0 0 + 5 6 2 0 0 0 0 + 6 4 1 0 0 0 0 +M END +$MOL + + -INDIGO-09042306582D + + 6 6 0 0 0 0 0 0 0 0999 V2000 + 13.8348 -2.7251 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.5652 -2.7246 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.7016 -2.2250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 15.5652 -3.7255 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.8348 -3.7300 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.7038 -4.2250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 + 3 1 2 0 0 0 0 + 4 2 2 0 0 0 0 + 1 5 1 0 0 0 0 + 2 3 1 0 0 0 0 + 5 6 2 0 0 0 0 + 6 4 1 0 0 0 0 +M END From 62f84c2d2e39e1ae50a9b70056ff8afb060193fe Mon Sep 17 00:00:00 2001 From: Vita Kuvakina Date: Tue, 5 Sep 2023 12:44:04 +0300 Subject: [PATCH 2/5] #3181 - Fix push error --- .../Attachment-Point-Tool/attachment-point-tool.spec.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/Attachment-Point-Tool/attachment-point-tool.spec.ts b/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/Attachment-Point-Tool/attachment-point-tool.spec.ts index cde61e4659..a25c2d7a05 100644 --- a/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/Attachment-Point-Tool/attachment-point-tool.spec.ts +++ b/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/Attachment-Point-Tool/attachment-point-tool.spec.ts @@ -26,7 +26,6 @@ import { screenshotBetweenUndoRedo, setAttachmentPoints, AttachmentPoint, - openFile, } from '@utils'; import { getAtomByIndex } from '@utils/canvas/atoms'; import { getRotationHandleCoordinates } from '@utils/clicks/selectButtonByTitle'; From 70e934529f5dfa23f8664c58af43aaf855fae149 Mon Sep 17 00:00:00 2001 From: Vita Kuvakina Date: Tue, 19 Sep 2023 02:17:26 +0300 Subject: [PATCH 3/5] #3181 - Updates after review --- .../Rxn-Files/rxn-files.spec.ts | 581 +++++++++--------- ...s-Type-Multiple-group-1-chromium-linux.png | Bin 29739 -> 0 bytes ...-Type-Multiple-group-1-chromium-linux.png} | Bin 29640 -> 29638 bytes ...reviation-1-2---open-1-chromium-linux.png} | Bin ...arrows-and-structures-3-chromium-linux.png | Bin 0 -> 12009 bytes ...ns-Rgroup-1-2---open-1-chromium-linux.png} | Bin ...arrows-and-structures-1-chromium-linux.png | Bin 0 -> 12655 bytes ...teroatoms-1-2---open-1-chromium-linux.png} | Bin ...d-RXN-2000-3000-file-1-chromium-linux.png} | Bin ...-and-bond-properties-1-chromium-linux.png} | Bin ...s-Type-Multiple-group-1-chromium-linux.png | Bin 0 -> 29740 bytes ...arrows-and-structures-2-chromium-linux.png | Bin 0 -> 12009 bytes ...on-with-atom-and-bond-properties-saved.rxn | 8 +- ...e-with-two-reaction-arrows-v2000-saved.rxn | 14 +- ...e-with-two-reaction-arrows-v3000-saved.rxn | 14 +- .../test-data/heteroatoms-expectedV2000.rxn | 10 +- .../test-data/r-group-V3000-expectedV3000.rxn | 2 +- .../test-data/sec-butyl-abr-expectedV2000.rxn | 8 +- 18 files changed, 323 insertions(+), 314 deletions(-) delete mode 100644 ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Open-and-Save-file---Open-the-RXN-v2000-v3000-files-with-S-Group-Properties-Type-Multiple-group-1-chromium-linux.png rename ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/{Open-and-Save-file---Reaction-from-file-that-contains-Sgroup-1-chromium-linux.png => Tests-for-Open-and-Save-RXN-file-operations-Op-12ac7-with-S-Group-Properties-Type-Multiple-group-1-chromium-linux.png} (52%) rename ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/{Open-and-Save-file---Reaction-from-file-that-contains-abbreviation-1-2---open-1-chromium-linux.png => Tests-for-Open-and-Save-RXN-file-operations-Op-14347-om-file-that-contains-abbreviation-1-2---open-1-chromium-linux.png} (100%) create mode 100644 ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Tests-for-Open-and-Save-RXN-file-operations-Op-56a8a-of-two-or-more-reaction-arrows-and-structures-3-chromium-linux.png rename ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/{Open-and-Save-file---V3000-rxn-file-contains-Rgroup-1-2---open-1-chromium-linux.png => Tests-for-Open-and-Save-RXN-file-operations-Op-64e6b-e---V3000-rxn-file-contains-Rgroup-1-2---open-1-chromium-linux.png} (100%) create mode 100644 ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Tests-for-Open-and-Save-RXN-file-operations-Op-75ae3-of-two-or-more-reaction-arrows-and-structures-1-chromium-linux.png rename ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/{Open-and-Save-file---Reaction-from-file-that-contains-Heteroatoms-1-2---open-1-chromium-linux.png => Tests-for-Open-and-Save-RXN-file-operations-Op-7f7c8-rom-file-that-contains-Heteroatoms-1-2---open-1-chromium-linux.png} (100%) rename ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/{Open-and-Save-file---Import-the-structure-from-the-saved-RXN-2000-3000-file-1-chromium-linux.png => Tests-for-Open-and-Save-RXN-file-operations-Op-891c7-e-structure-from-the-saved-RXN-2000-3000-file-1-chromium-linux.png} (100%) rename ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/{Open-and-Save-file---Reaction-with-atom-and-bond-properties-1-chromium-linux.png => Tests-for-Open-and-Save-RXN-file-operations-Op-bcdcd-file---Reaction-with-atom-and-bond-properties-1-chromium-linux.png} (100%) create mode 100644 ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Tests-for-Open-and-Save-RXN-file-operations-Op-c6241-with-S-Group-Properties-Type-Multiple-group-1-chromium-linux.png create mode 100644 ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Tests-for-Open-and-Save-RXN-file-operations-Op-e083c-of-two-or-more-reaction-arrows-and-structures-2-chromium-linux.png diff --git a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts index a85223792a..d33a7cef2e 100644 --- a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts +++ b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts @@ -42,174 +42,177 @@ async function savedFileInfoStartsWithRxn(page: Page, wantedResult = false) { : expect(textareaText?.startsWith(expectedSentence)).toBeFalsy(); } -test('Open and Save file - Reaction with atom and bond properties', async ({ - page, -}) => { - /** - * Test case: EPMLSOPKET-1897 - * Description: Reaction with atom and bond properties - */ - const xOffsetFromCenter = 40; - await page.goto(''); - await drawBenzeneRing(page); - await selectNestedTool(page, BondTool.SINGLE_AROMATIC); - await clickOnBond(page, BondType.DOUBLE, 1); - await selectNestedTool(page, BondTool.TRIPPLE); - await clickOnBond(page, BondType.DOUBLE, 1); - await selectAtomInToolbar(AtomButton.Nitrogen, page); - await clickOnAtom(page, 'C', 1); - await selectNestedTool(page, ArrowTool.ARROW_FILLED_BOW); - await clickOnTheCanvas(page, xOffsetFromCenter, 0); - - const expectedFile = await getRxn(page); - await saveToFile( - 'RXN/reaction-with-atom-and-bond-properties-saved.rxn', - expectedFile, - ); - - await selectAction(TopPanelButton.Clear, page); - - await openFileAndAddToCanvas( - 'RXN/reaction-with-atom-and-bond-properties-saved.rxn', - page, - ); - - await takeEditorScreenshot(page); -}); - -test('Open and Save file - Reaction from file that contains Rgroup', async ({ - page, -}) => { - /** - * Test case: EPMLSOPKET-1901 - * Description: Reaction from file that contains Rgroup - */ - const xOffsetFromCenter = 40; - await page.goto(''); - await drawBenzeneRing(page); - await selectLeftPanelButton(LeftPanelButton.R_GroupLabelTool, page); - await clickOnAtom(page, 'C', 1); - await page.getByRole('button', { name: 'R7' }).click(); - await page.getByRole('button', { name: 'Apply' }).click(); - await selectNestedTool(page, ArrowTool.ARROW_FILLED_BOW); - await clickOnTheCanvas(page, xOffsetFromCenter, 0); - await selectTopPanelButton(TopPanelButton.Save, page); - const saveButtonOne = page.getByRole('button', { name: 'Save', exact: true }); - await expect(saveButtonOne).not.toHaveAttribute('disabled', 'disabled'); - - await pressButton(page, 'Cancel'); - await selectNestedTool(page, RgroupTool.ATTACHMENT_POINTS); - await setAttachmentPoints( - page, - { label: 'C', index: 2 }, - { primary: true }, - 'Apply', - ); - await selectTopPanelButton(TopPanelButton.Save, page); - const saveButtonTwo = page.getByRole('button', { name: 'Save', exact: true }); - await expect(saveButtonTwo).not.toHaveAttribute('disabled', 'disabled'); - - await page.getByRole('button', { name: 'Cancel' }).click(); - await selectNestedTool(page, RgroupTool.R_GROUP_FRAGMENT); - const { x, y } = await getCoordinatesTopAtomOfBenzeneRing(page); - await page.mouse.click(x, y); - await page.getByRole('button', { name: 'R22' }).click(); - await page.getByRole('button', { name: 'Apply' }).click(); - await selectTopPanelButton(TopPanelButton.Save, page); - const saveButtonThree = page.getByRole('button', { - name: 'Save', - exact: true, +test.describe('Tests for Open and Save RXN file operations', () => { + test.beforeEach(async ({ page }) => { + await waitForPageInit(page); }); - await expect(saveButtonThree).not.toHaveAttribute('disabled', 'disabled'); -}); -// EPMLSOPKET-1903 - TO DO -// TO DO: while saving file showed ERROR: array: invalid index -2 (size=0) -// Need to create new bug looks like it connected to #2389 issue -test.fixme( - 'Open and Save file - Reaction from file that contains Sgroup', - async ({ page }) => { + test('Open and Save file - Reaction with atom and bond properties', async ({ + page, + }) => { /** - * Test case: EPMLSOPKET-1903 - * Description: Reaction from file that contains Sgroup + * Test case: EPMLSOPKET-1897 + * Description: Reaction with atom and bond properties */ - await page.goto(''); - await openFileAndAddToCanvas( - 'RXN/structure-with-s-groups-with-unsupported-s-group-type.rxn', - page, - ); + const xOffsetFromCenter = 40; + await drawBenzeneRing(page); + await selectNestedTool(page, BondTool.SINGLE_AROMATIC); + await clickOnBond(page, BondType.DOUBLE, 1); + await selectNestedTool(page, BondTool.TRIPPLE); + await clickOnBond(page, BondType.DOUBLE, 1); + await selectAtomInToolbar(AtomButton.Nitrogen, page); + await clickOnAtom(page, 'C', 1); + await selectNestedTool(page, ArrowTool.ARROW_FILLED_BOW); + await clickOnTheCanvas(page, xOffsetFromCenter, 0); + const expectedFile = await getRxn(page); await saveToFile( - 'RXN/structure-with-s-groups-with-unsupported-s-group-type-saved.rxn', + 'RXN/reaction-with-atom-and-bond-properties-saved.rxn', expectedFile, ); + + await selectAction(TopPanelButton.Clear, page); + await openFileAndAddToCanvas( - 'RXN/structure-with-s-groups-with-unsupported-s-group-type-saved.rxn', + 'RXN/reaction-with-atom-and-bond-properties-saved.rxn', page, ); + await takeEditorScreenshot(page); - }, -); - -test('Open and Save file - File without arrow or(and) plus-symbol', async ({ - page, -}) => { - /** - * Test case: EPMLSOPKET-1905 - * Description: File without arrow or(and) plus-symbol - */ - await page.goto(''); - await selectLeftPanelButton(LeftPanelButton.Chain, page); - await moveMouseToTheMiddleOfTheScreen(page); - const { x, y } = await getCoordinatesOfTheMiddleOfTheScreen(page); - const xDelta = 300; - const xDeltaHalf = 150; - const yDelta50 = 50; - const yDelta20 = 20; - const xCoordinatesWithShift = x + xDelta; - const xCoordinatesWithShiftHalf = x + xDeltaHalf; - const yCoordinatesWithShift = y + yDelta50; - await dragMouseTo(xCoordinatesWithShift, y, page); - await savedFileInfoStartsWithRxn(page); - - await pressButton(page, 'Cancel'); - await selectLeftPanelButton(LeftPanelButton.ReactionPlusTool, page); - await page.mouse.click(xCoordinatesWithShiftHalf, yCoordinatesWithShift); - const ySecondChain = yCoordinatesWithShift + yDelta50; - await selectLeftPanelButton(LeftPanelButton.Chain, page); - await page.mouse.move(x, ySecondChain); - await dragMouseTo(xCoordinatesWithShift, ySecondChain, page); - await savedFileInfoStartsWithRxn(page); - - await pressButton(page, 'Cancel'); - await selectLeftPanelButton(LeftPanelButton.Erase, page); - await page.mouse.click(xCoordinatesWithShiftHalf, yCoordinatesWithShift); - await selectNestedTool(page, ArrowTool.ARROW_FILLED_BOW); - const yArrowStart = y + yDelta20; - const yArrowEnd = yArrowStart + yDelta20; - await page.mouse.move(xCoordinatesWithShiftHalf, yArrowStart); - await dragMouseTo(xCoordinatesWithShiftHalf, yArrowEnd, page); - await savedFileInfoStartsWithRxn(page, true); - - await pressButton(page, 'Cancel'); - await selectTopPanelButton(TopPanelButton.Clear, page); - await selectNestedTool(page, ArrowTool.ARROW_FILLED_BOW); - await page.mouse.move(xCoordinatesWithShiftHalf, yArrowStart); - await dragMouseTo(xCoordinatesWithShiftHalf, yArrowEnd, page); - await savedFileInfoStartsWithRxn(page, true); -}); + }); + + test('Open and Save file - Reaction from file that contains Rgroup', async ({ + page, + }) => { + /** + * Test case: EPMLSOPKET-1901 + * Description: Reaction from file that contains Rgroup + */ + const xOffsetFromCenter = 40; + await drawBenzeneRing(page); + await selectLeftPanelButton(LeftPanelButton.R_GroupLabelTool, page); + await clickOnAtom(page, 'C', 1); + await page.getByRole('button', { name: 'R7' }).click(); + await page.getByRole('button', { name: 'Apply' }).click(); + await selectNestedTool(page, ArrowTool.ARROW_FILLED_BOW); + await clickOnTheCanvas(page, xOffsetFromCenter, 0); + await selectTopPanelButton(TopPanelButton.Save, page); + const saveButtonOne = page.getByRole('button', { + name: 'Save', + exact: true, + }); + await expect(saveButtonOne).not.toHaveAttribute('disabled', 'disabled'); + + await pressButton(page, 'Cancel'); + await selectNestedTool(page, RgroupTool.ATTACHMENT_POINTS); + await setAttachmentPoints( + page, + { label: 'C', index: 2 }, + { primary: true }, + 'Apply', + ); + await selectTopPanelButton(TopPanelButton.Save, page); + const saveButtonTwo = page.getByRole('button', { + name: 'Save', + exact: true, + }); + await expect(saveButtonTwo).not.toHaveAttribute('disabled', 'disabled'); + + await page.getByRole('button', { name: 'Cancel' }).click(); + await selectNestedTool(page, RgroupTool.R_GROUP_FRAGMENT); + const { x, y } = await getCoordinatesTopAtomOfBenzeneRing(page); + await page.mouse.click(x, y); + await page.getByRole('button', { name: 'R22' }).click(); + await page.getByRole('button', { name: 'Apply' }).click(); + await selectTopPanelButton(TopPanelButton.Save, page); + const saveButtonThree = page.getByRole('button', { + name: 'Save', + exact: true, + }); + await expect(saveButtonThree).not.toHaveAttribute('disabled', 'disabled'); + }); + + // EPMLSOPKET-1903 - TO DO + // TO DO: while saving file showed ERROR: array: invalid index -2 (size=0) + // Need to create new bug looks like it connected to #2389 issue + test.fixme( + 'Open and Save file - Reaction from file that contains Sgroup', + async ({ page }) => { + /** + * Test case: EPMLSOPKET-1903 + * Description: Reaction from file that contains Sgroup + */ + await openFileAndAddToCanvas( + 'RXN/structure-with-s-groups-with-unsupported-s-group-type.rxn', + page, + ); + const expectedFile = await getRxn(page); + await saveToFile( + 'RXN/structure-with-s-groups-with-unsupported-s-group-type-saved.rxn', + expectedFile, + ); + await openFileAndAddToCanvas( + 'RXN/structure-with-s-groups-with-unsupported-s-group-type-saved.rxn', + page, + ); + await takeEditorScreenshot(page); + }, + ); + + test('Open and Save file - File without arrow or(and) plus-symbol', async ({ + page, + }) => { + /** + * Test case: EPMLSOPKET-1905 + * Description: File without arrow or(and) plus-symbol + */ + await selectLeftPanelButton(LeftPanelButton.Chain, page); + await moveMouseToTheMiddleOfTheScreen(page); + const { x, y } = await getCoordinatesOfTheMiddleOfTheScreen(page); + const xDelta = 300; + const xDeltaHalf = 150; + const yDelta50 = 50; + const yDelta20 = 20; + const xCoordinatesWithShift = x + xDelta; + const xCoordinatesWithShiftHalf = x + xDeltaHalf; + const yCoordinatesWithShift = y + yDelta50; + await dragMouseTo(xCoordinatesWithShift, y, page); + await savedFileInfoStartsWithRxn(page); + + await pressButton(page, 'Cancel'); + await selectLeftPanelButton(LeftPanelButton.ReactionPlusTool, page); + await page.mouse.click(xCoordinatesWithShiftHalf, yCoordinatesWithShift); + const ySecondChain = yCoordinatesWithShift + yDelta50; + await selectLeftPanelButton(LeftPanelButton.Chain, page); + await page.mouse.move(x, ySecondChain); + await dragMouseTo(xCoordinatesWithShift, ySecondChain, page); + await savedFileInfoStartsWithRxn(page); + + await pressButton(page, 'Cancel'); + await selectLeftPanelButton(LeftPanelButton.Erase, page); + await page.mouse.click(xCoordinatesWithShiftHalf, yCoordinatesWithShift); + await selectNestedTool(page, ArrowTool.ARROW_FILLED_BOW); + const yArrowStart = y + yDelta20; + const yArrowEnd = yArrowStart + yDelta20; + await page.mouse.move(xCoordinatesWithShiftHalf, yArrowStart); + await dragMouseTo(xCoordinatesWithShiftHalf, yArrowEnd, page); + await savedFileInfoStartsWithRxn(page, true); + + await pressButton(page, 'Cancel'); + await selectTopPanelButton(TopPanelButton.Clear, page); + await selectNestedTool(page, ArrowTool.ARROW_FILLED_BOW); + await page.mouse.move(xCoordinatesWithShiftHalf, yArrowStart); + await dragMouseTo(xCoordinatesWithShiftHalf, yArrowEnd, page); + await savedFileInfoStartsWithRxn(page, true); + }); -// EPMLSOPKET-8904 - TO DO -// TO DO: looks like issue was not fixed -// Need to recheck issue #1837, added new screenshot there -test.fixme( - 'Open and Save file - Structure is not missing when "Paste from clipboard" or "Open from file" if reaction consists of two or more reaction arrows and structures', - async ({ page }) => { + test('Open and Save file - Structure is not missing when "Paste from clipboard" or "Open from file" if reaction consists of two or more reaction arrows and structures', async ({ + page, + }) => { /** * Test case: EPMLSOPKET-8904 * Description: Structure isn't missing when "Paste from clipboard" or "Open from file" if reaction consists of two or more reaction arrows and structures */ - await page.goto(''); const RING_OFFSET = 150; const ARROW_OFFSET = 20; const ARROW_LENGTH = 100; @@ -241,156 +244,162 @@ test.fixme( page, ); await takeEditorScreenshot(page); - }, -); - -test('Open and Save file - Import the structure from the saved RXN 2000/3000 file', async ({ - page, -}) => { - /** - * Test case: EPMLSOPKET-12964 - * Description: Import the structure from the saved RXN 2000/3000 file - */ - await page.goto(''); - await openFileAndAddToCanvas( - 'RXN/reaction-with-several-components.rxn', - page, - ); - await takeEditorScreenshot(page); -}); - -test('Open and Save file - Open the RXN v2000/v3000 files with S-Group Properties Type = Multiple group', async ({ - page, -}) => { - /** - * Test case: EPMLSOPKET-12967 for Open RXN v3000 file with 'S-Group Properties Type = Multiple group rxnV3000Multiple.zip - * Description: Open the RXN v2000/v3000 files with S-Group Properties Type = Multiple group - */ - await page.goto(''); - await openFileAndAddToCanvas( - 'RXN/structure-with-s-groups-with-unsupported-s-group-type-V3000.rxn', - page, - ); - await takeEditorScreenshot(page); -}); - -test('Open and Save file - Reaction from file that contains abbreviation 1/2 - open', async ({ - page, -}) => { - /** - * Test case: EPMLSOPKET-1899(1) - * Description: Reaction with abbreviations is opened and saved correctly - */ - await waitForPageInit(page); - - await openFileAndAddToCanvas('sec_butyl_abr.rxn', page); - // check that structure opened from file is displayed correctly - await takeEditorScreenshot(page); -}); - -test('Open and Save file - Reaction from file that contains abbreviation 2/2 - save', async ({ - page, -}) => { - /** - * Test case: EPMLSOPKET-1899(2) - * Description: Reaction with abbreviations is opened and saved correctly - */ - await waitForPageInit(page); - await openFileAndAddToCanvas('sec_butyl_abr.rxn', page); - const expectedFile = await getRxn(page, 'v2000'); - await saveToFile('sec-butyl-abr-expectedV2000.rxn', expectedFile); + await selectAction(TopPanelButton.Clear, page); + await openFileAndAddToCanvas( + 'RXN/structure-with-two-reaction-arrows-v2000-saved.rxn', + page, + ); + await takeEditorScreenshot(page); + }); - // eslint-disable-next-line no-magic-numbers - const METADATA_STRINGS_INDEXES = [2, 7, 23, 54]; + test('Open and Save file - Import the structure from the saved RXN 2000/3000 file', async ({ + page, + }) => { + /** + * Test case: EPMLSOPKET-12964 + * Description: Import the structure from the saved RXN 2000/3000 file + */ + await openFileAndAddToCanvas( + 'RXN/reaction-with-several-components.rxn', + page, + ); + await takeEditorScreenshot(page); + }); - const { fileExpected: rxnFileExpected, file: rxnFile } = - await receiveFileComparisonData({ + test('Open and Save file - Open the RXN v3000 file with S-Group Properties Type = Multiple group', async ({ + page, + }) => { + /** + * Test case: EPMLSOPKET-12967 for Open RXN v3000 file with 'S-Group Properties Type = Multiple group rxnV3000Multiple.zip + * Description: Open the RXN v3000 file with S-Group Properties Type = Multiple group + */ + await openFileAndAddToCanvas( + 'RXN/structure-with-s-groups-with-unsupported-s-group-type-V3000.rxn', page, - expectedFileName: 'tests/test-data/sec-butyl-abr-expectedV2000.rxn', - metaDataIndexes: METADATA_STRINGS_INDEXES, - }); + ); + await takeEditorScreenshot(page); + }); - expect(rxnFile).toEqual(rxnFileExpected); -}); + test('Open and Save file - Open the RXN v2000 file with S-Group Properties Type = Multiple group', async ({ + page, + }) => { + /** + * Test case: EPMLSOPKET-12967 for Open RXN v2000 file with 'S-Group Properties Type = Multiple group rxnV2000Multiple.zip + * Description: Open the RXN v2000 file with S-Group Properties Type = Multiple group + */ + await openFileAndAddToCanvas( + 'RXN/structure-with-s-groups-with-unsupported-s-group-type-V2000.rxn', + page, + ); + await takeEditorScreenshot(page); + }); -test('Open and Save file - Reaction from file that contains Heteroatoms 1/2 - open', async ({ - page, -}) => { - /** - * Test case: EPMLSOPKET-1904(1) - * Description: Reaction with heteroatoms is opened and saved correctly - */ - await waitForPageInit(page); - - await openFileAndAddToCanvas('Heteroatoms.rxn', page); - // check that structure opened from file is displayed correctly - await takeEditorScreenshot(page); -}); + test('Open and Save file - Reaction from file that contains abbreviation 1/2 - open', async ({ + page, + }) => { + /** + * Test case: EPMLSOPKET-1899(1) + * Description: Reaction with abbreviations is opened and saved correctly + */ + await openFileAndAddToCanvas('sec_butyl_abr.rxn', page); + await takeEditorScreenshot(page); + }); -test('Open and Save file - Reaction from file that contains Heteroatoms 2/2 - save', async ({ - page, -}) => { - /** - * Test case: EPMLSOPKET-1904(2) - * Description: Reaction with heteroatoms is opened and saved correctly - */ - await waitForPageInit(page); + test('Open and Save file - Reaction from file that contains abbreviation 2/2 - save', async ({ + page, + }) => { + /** + * Test case: EPMLSOPKET-1899(2) + * Description: Reaction with abbreviations is opened and saved correctly + */ + await openFileAndAddToCanvas('sec_butyl_abr.rxn', page); + const expectedFile = await getRxn(page, 'v2000'); + await saveToFile('sec-butyl-abr-expectedV2000.rxn', expectedFile); - await openFileAndAddToCanvas('Heteroatoms.rxn', page); - const expectedFile = await getRxn(page, 'v2000'); - await saveToFile('heteroatoms-expectedV2000.rxn', expectedFile); + // eslint-disable-next-line no-magic-numbers + const METADATA_STRINGS_INDEXES = [2, 7, 23, 54]; - // eslint-disable-next-line no-magic-numbers - const METADATA_STRINGS_INDEXES = [2, 7, 30, 39, 62]; + const { fileExpected: rxnFileExpected, file: rxnFile } = + await receiveFileComparisonData({ + page, + expectedFileName: 'tests/test-data/sec-butyl-abr-expectedV2000.rxn', + metaDataIndexes: METADATA_STRINGS_INDEXES, + }); - const { fileExpected: rxnFileExpected, file: rxnFile } = - await receiveFileComparisonData({ - page, - expectedFileName: 'tests/test-data/heteroatoms-expectedV2000.rxn', - metaDataIndexes: METADATA_STRINGS_INDEXES, - }); + expect(rxnFile).toEqual(rxnFileExpected); + }); - expect(rxnFile).toEqual(rxnFileExpected); -}); + test('Open and Save file - Reaction from file that contains Heteroatoms 1/2 - open', async ({ + page, + }) => { + /** + * Test case: EPMLSOPKET-1904(1) + * Description: Reaction with heteroatoms is opened and saved correctly + */ + await openFileAndAddToCanvas('Heteroatoms.rxn', page); + // check that structure opened from file is displayed correctly + await takeEditorScreenshot(page); + }); -test('Open and Save file - V3000 rxn file contains Rgroup 1/2 - open', async ({ - page, -}) => { - /** - * Test case: EPMLSOPKET-1902(1) - * Description: Reaction can be opened correctly from rxn V3000 file - */ - await waitForPageInit(page); - - await openFileAndAddToCanvas('Rgroup_V3000.rxn', page); - // check that structure opened from file is displayed correctly - await takeEditorScreenshot(page); -}); + test('Open and Save file - Reaction from file that contains Heteroatoms 2/2 - save', async ({ + page, + }) => { + /** + * Test case: EPMLSOPKET-1904(2) + * Description: Reaction with heteroatoms is opened and saved correctly + */ + await openFileAndAddToCanvas('Heteroatoms.rxn', page); + const expectedFile = await getRxn(page, 'v2000'); + await saveToFile('heteroatoms-expectedV2000.rxn', expectedFile); -test('Open and Save file - V3000 rxn file contains Rgroup 2/2 - save', async ({ - page, -}) => { - /** - * Test case: EPMLSOPKET-1902(2) - * Description: Reaction can be saved correctly to rxn V3000 file - */ - await waitForPageInit(page); + // eslint-disable-next-line no-magic-numbers + const METADATA_STRINGS_INDEXES = [2, 7, 30, 39, 62]; - await openFileAndAddToCanvas('Rgroup_V3000.rxn', page); - const expectedFile = await getRxn(page, 'v3000'); - await saveToFile('r-group-V3000-expectedV3000.rxn', expectedFile); + const { fileExpected: rxnFileExpected, file: rxnFile } = + await receiveFileComparisonData({ + page, + expectedFileName: 'tests/test-data/heteroatoms-expectedV2000.rxn', + metaDataIndexes: METADATA_STRINGS_INDEXES, + }); - // eslint-disable-next-line no-magic-numbers - const METADATA_STRINGS_INDEXES = [2]; + expect(rxnFile).toEqual(rxnFileExpected); + }); - const { fileExpected: rxnFileExpected, file: rxnFile } = - await receiveFileComparisonData({ - page, - expectedFileName: 'tests/test-data/r-group-V3000-expectedV3000.rxn', - metaDataIndexes: METADATA_STRINGS_INDEXES, - fileFormat: 'v3000', - }); + test('Open and Save file - V3000 rxn file contains Rgroup 1/2 - open', async ({ + page, + }) => { + /** + * Test case: EPMLSOPKET-1902(1) + * Description: Reaction can be opened correctly from rxn V3000 file + */ + await openFileAndAddToCanvas('Rgroup_V3000.rxn', page); + // check that structure opened from file is displayed correctly + await takeEditorScreenshot(page); + }); - expect(rxnFile).toEqual(rxnFileExpected); + test('Open and Save file - V3000 rxn file contains Rgroup 2/2 - save', async ({ + page, + }) => { + /** + * Test case: EPMLSOPKET-1902(2) + * Description: Reaction can be saved correctly to rxn V3000 file + */ + await openFileAndAddToCanvas('Rgroup_V3000.rxn', page); + const expectedFile = await getRxn(page, 'v3000'); + await saveToFile('r-group-V3000-expectedV3000.rxn', expectedFile); + + // eslint-disable-next-line no-magic-numbers + const METADATA_STRINGS_INDEXES = [2]; + + const { fileExpected: rxnFileExpected, file: rxnFile } = + await receiveFileComparisonData({ + page, + expectedFileName: 'tests/test-data/r-group-V3000-expectedV3000.rxn', + metaDataIndexes: METADATA_STRINGS_INDEXES, + fileFormat: 'v3000', + }); + + expect(rxnFile).toEqual(rxnFileExpected); + }); }); diff --git a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Open-and-Save-file---Open-the-RXN-v2000-v3000-files-with-S-Group-Properties-Type-Multiple-group-1-chromium-linux.png b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Open-and-Save-file---Open-the-RXN-v2000-v3000-files-with-S-Group-Properties-Type-Multiple-group-1-chromium-linux.png deleted file mode 100644 index bc3e94cfd49e13e1b894ee66082f4c99fcc27cbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29739 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 diff --git a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Open-and-Save-file---Reaction-from-file-that-contains-Sgroup-1-chromium-linux.png b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Tests-for-Open-and-Save-RXN-file-operations-Op-12ac7-with-S-Group-Properties-Type-Multiple-group-1-chromium-linux.png similarity index 52% rename from ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Open-and-Save-file---Reaction-from-file-that-contains-Sgroup-1-chromium-linux.png rename to ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Tests-for-Open-and-Save-RXN-file-operations-Op-12ac7-with-S-Group-Properties-Type-Multiple-group-1-chromium-linux.png index 43805cb0783c9f7c9b945c96098a2f9cce9bc5ce..a0b033405cd6730840653f1ae7d9e8943b63fe52 100644 GIT binary patch delta 13192 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 XCD|eJX5!Rla=DbGyhP$@gFF8NZi{W; diff --git a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Open-and-Save-file---Reaction-from-file-that-contains-abbreviation-1-2---open-1-chromium-linux.png b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Tests-for-Open-and-Save-RXN-file-operations-Op-14347-om-file-that-contains-abbreviation-1-2---open-1-chromium-linux.png similarity index 100% rename from ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Open-and-Save-file---Reaction-from-file-that-contains-abbreviation-1-2---open-1-chromium-linux.png rename to ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Tests-for-Open-and-Save-RXN-file-operations-Op-14347-om-file-that-contains-abbreviation-1-2---open-1-chromium-linux.png diff --git a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Tests-for-Open-and-Save-RXN-file-operations-Op-56a8a-of-two-or-more-reaction-arrows-and-structures-3-chromium-linux.png b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Tests-for-Open-and-Save-RXN-file-operations-Op-56a8a-of-two-or-more-reaction-arrows-and-structures-3-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..5db800149c7e933fa2435627a62c044d9931934b GIT binary patch literal 12009 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 literal 0 HcmV?d00001 diff --git a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Open-and-Save-file---V3000-rxn-file-contains-Rgroup-1-2---open-1-chromium-linux.png b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Tests-for-Open-and-Save-RXN-file-operations-Op-64e6b-e---V3000-rxn-file-contains-Rgroup-1-2---open-1-chromium-linux.png similarity index 100% rename from ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Open-and-Save-file---V3000-rxn-file-contains-Rgroup-1-2---open-1-chromium-linux.png rename to ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Tests-for-Open-and-Save-RXN-file-operations-Op-64e6b-e---V3000-rxn-file-contains-Rgroup-1-2---open-1-chromium-linux.png diff --git a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Tests-for-Open-and-Save-RXN-file-operations-Op-75ae3-of-two-or-more-reaction-arrows-and-structures-1-chromium-linux.png b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Tests-for-Open-and-Save-RXN-file-operations-Op-75ae3-of-two-or-more-reaction-arrows-and-structures-1-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..93d6784fb047cf14bc963b86bab94c9ccaae89d1 GIT binary patch literal 12655 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 AH~;_u literal 0 HcmV?d00001 diff --git a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Open-and-Save-file---Reaction-from-file-that-contains-Heteroatoms-1-2---open-1-chromium-linux.png b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Tests-for-Open-and-Save-RXN-file-operations-Op-7f7c8-rom-file-that-contains-Heteroatoms-1-2---open-1-chromium-linux.png similarity index 100% rename from ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Open-and-Save-file---Reaction-from-file-that-contains-Heteroatoms-1-2---open-1-chromium-linux.png rename to ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Tests-for-Open-and-Save-RXN-file-operations-Op-7f7c8-rom-file-that-contains-Heteroatoms-1-2---open-1-chromium-linux.png diff --git a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Open-and-Save-file---Import-the-structure-from-the-saved-RXN-2000-3000-file-1-chromium-linux.png b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Tests-for-Open-and-Save-RXN-file-operations-Op-891c7-e-structure-from-the-saved-RXN-2000-3000-file-1-chromium-linux.png similarity index 100% rename from ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Open-and-Save-file---Import-the-structure-from-the-saved-RXN-2000-3000-file-1-chromium-linux.png rename to ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Tests-for-Open-and-Save-RXN-file-operations-Op-891c7-e-structure-from-the-saved-RXN-2000-3000-file-1-chromium-linux.png diff --git a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Open-and-Save-file---Reaction-with-atom-and-bond-properties-1-chromium-linux.png b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Tests-for-Open-and-Save-RXN-file-operations-Op-bcdcd-file---Reaction-with-atom-and-bond-properties-1-chromium-linux.png similarity index 100% rename from ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Open-and-Save-file---Reaction-with-atom-and-bond-properties-1-chromium-linux.png rename to ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Tests-for-Open-and-Save-RXN-file-operations-Op-bcdcd-file---Reaction-with-atom-and-bond-properties-1-chromium-linux.png diff --git a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Tests-for-Open-and-Save-RXN-file-operations-Op-c6241-with-S-Group-Properties-Type-Multiple-group-1-chromium-linux.png b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Tests-for-Open-and-Save-RXN-file-operations-Op-c6241-with-S-Group-Properties-Type-Multiple-group-1-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..31c2e7807c420fc94edf0787cc4aa74a94465a10 GIT binary patch literal 29740 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 literal 0 HcmV?d00001 diff --git a/ketcher-autotests/tests/test-data/RXN/reaction-with-atom-and-bond-properties-saved.rxn b/ketcher-autotests/tests/test-data/RXN/reaction-with-atom-and-bond-properties-saved.rxn index 617b6621a5..b6b3d6f518 100644 --- a/ketcher-autotests/tests/test-data/RXN/reaction-with-atom-and-bond-properties-saved.rxn +++ b/ketcher-autotests/tests/test-data/RXN/reaction-with-atom-and-bond-properties-saved.rxn @@ -1,11 +1,11 @@ $RXN - -INDIGO- 0904230127 + -INDIGO- 0918232242 1 0 $MOL - -INDIGO-09042301272D + -INDIGO-09182322422D 6 6 0 0 0 0 0 0 0 0999 V2000 13.8348 -7.5001 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 @@ -15,9 +15,9 @@ $MOL 13.8348 -8.5050 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0 14.7038 -9.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 3 1 2 0 0 0 0 - 4 2 3 0 0 0 0 1 5 1 0 0 0 0 - 2 3 1 0 0 0 0 5 6 6 0 0 0 0 6 4 1 0 0 0 0 + 4 2 3 0 0 0 0 + 2 3 1 0 0 0 0 M END diff --git a/ketcher-autotests/tests/test-data/RXN/structure-with-two-reaction-arrows-v2000-saved.rxn b/ketcher-autotests/tests/test-data/RXN/structure-with-two-reaction-arrows-v2000-saved.rxn index f66b45eed1..ad01b0e7f4 100644 --- a/ketcher-autotests/tests/test-data/RXN/structure-with-two-reaction-arrows-v2000-saved.rxn +++ b/ketcher-autotests/tests/test-data/RXN/structure-with-two-reaction-arrows-v2000-saved.rxn @@ -1,11 +1,11 @@ $RXN - -INDIGO- 0904230658 + -INDIGO- 0918232303 1 1 $MOL - -INDIGO-09042306582D + -INDIGO-09182323032D 6 6 0 0 0 0 0 0 0 0999 V2000 13.8348 -7.5001 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 @@ -15,15 +15,15 @@ $MOL 13.8348 -8.5050 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 14.7038 -9.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 3 1 2 0 0 0 0 - 4 2 2 0 0 0 0 1 5 1 0 0 0 0 - 2 3 1 0 0 0 0 5 6 2 0 0 0 0 6 4 1 0 0 0 0 + 4 2 2 0 0 0 0 + 2 3 1 0 0 0 0 M END $MOL - -INDIGO-09042306582D + -INDIGO-09182323032D 6 6 0 0 0 0 0 0 0 0999 V2000 13.8348 -2.7251 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 @@ -33,9 +33,9 @@ $MOL 13.8348 -3.7300 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 14.7038 -4.2250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 3 1 2 0 0 0 0 - 4 2 2 0 0 0 0 1 5 1 0 0 0 0 - 2 3 1 0 0 0 0 5 6 2 0 0 0 0 6 4 1 0 0 0 0 + 4 2 2 0 0 0 0 + 2 3 1 0 0 0 0 M END diff --git a/ketcher-autotests/tests/test-data/RXN/structure-with-two-reaction-arrows-v3000-saved.rxn b/ketcher-autotests/tests/test-data/RXN/structure-with-two-reaction-arrows-v3000-saved.rxn index f66b45eed1..ad01b0e7f4 100644 --- a/ketcher-autotests/tests/test-data/RXN/structure-with-two-reaction-arrows-v3000-saved.rxn +++ b/ketcher-autotests/tests/test-data/RXN/structure-with-two-reaction-arrows-v3000-saved.rxn @@ -1,11 +1,11 @@ $RXN - -INDIGO- 0904230658 + -INDIGO- 0918232303 1 1 $MOL - -INDIGO-09042306582D + -INDIGO-09182323032D 6 6 0 0 0 0 0 0 0 0999 V2000 13.8348 -7.5001 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 @@ -15,15 +15,15 @@ $MOL 13.8348 -8.5050 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 14.7038 -9.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 3 1 2 0 0 0 0 - 4 2 2 0 0 0 0 1 5 1 0 0 0 0 - 2 3 1 0 0 0 0 5 6 2 0 0 0 0 6 4 1 0 0 0 0 + 4 2 2 0 0 0 0 + 2 3 1 0 0 0 0 M END $MOL - -INDIGO-09042306582D + -INDIGO-09182323032D 6 6 0 0 0 0 0 0 0 0999 V2000 13.8348 -2.7251 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 @@ -33,9 +33,9 @@ $MOL 13.8348 -3.7300 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 14.7038 -4.2250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 3 1 2 0 0 0 0 - 4 2 2 0 0 0 0 1 5 1 0 0 0 0 - 2 3 1 0 0 0 0 5 6 2 0 0 0 0 6 4 1 0 0 0 0 + 4 2 2 0 0 0 0 + 2 3 1 0 0 0 0 M END diff --git a/ketcher-autotests/tests/test-data/heteroatoms-expectedV2000.rxn b/ketcher-autotests/tests/test-data/heteroatoms-expectedV2000.rxn index c7cf8e1da0..42876a3a4e 100644 --- a/ketcher-autotests/tests/test-data/heteroatoms-expectedV2000.rxn +++ b/ketcher-autotests/tests/test-data/heteroatoms-expectedV2000.rxn @@ -1,11 +1,11 @@ $RXN - -INDIGO- 0914231336 + -INDIGO- 0918232314 2 2 $MOL - -INDIGO-09142313362D + -INDIGO-09182323142D 9 8 0 0 0 0 0 0 0 0999 V2000 1.8618 -8.5809 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0 @@ -28,7 +28,7 @@ $MOL M END $MOL - -INDIGO-09142313362D + -INDIGO-09182323142D 2 1 0 0 0 0 0 0 0 0999 V2000 11.4345 -8.5951 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0 @@ -37,7 +37,7 @@ $MOL M END $MOL - -INDIGO-09142313362D + -INDIGO-09182323142D 9 8 0 0 0 0 0 0 0 0999 V2000 18.1339 -8.7017 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0 @@ -60,7 +60,7 @@ $MOL M END $MOL - -INDIGO-09142313362D + -INDIGO-09182323142D 1 0 0 0 0 0 0 0 0 0999 V2000 27.9882 -8.5213 0.0000 H2 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/ketcher-autotests/tests/test-data/r-group-V3000-expectedV3000.rxn b/ketcher-autotests/tests/test-data/r-group-V3000-expectedV3000.rxn index d33bfea7c0..365aa5250c 100644 --- a/ketcher-autotests/tests/test-data/r-group-V3000-expectedV3000.rxn +++ b/ketcher-autotests/tests/test-data/r-group-V3000-expectedV3000.rxn @@ -1,6 +1,6 @@ $RXN V3000 - -INDIGO- 0914231336 + -INDIGO- 0918232316 M V30 COUNTS 1 1 M V30 BEGIN REACTANT diff --git a/ketcher-autotests/tests/test-data/sec-butyl-abr-expectedV2000.rxn b/ketcher-autotests/tests/test-data/sec-butyl-abr-expectedV2000.rxn index 8174d254de..200ea765c1 100644 --- a/ketcher-autotests/tests/test-data/sec-butyl-abr-expectedV2000.rxn +++ b/ketcher-autotests/tests/test-data/sec-butyl-abr-expectedV2000.rxn @@ -1,11 +1,11 @@ $RXN - -INDIGO- 0914231336 + -INDIGO- 0918232311 2 1 $MOL - -INDIGO-09142313362D + -INDIGO-09182323112D 5 5 0 0 0 0 0 0 0 0999 V2000 13.1022 -9.7018 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 @@ -21,7 +21,7 @@ $MOL M END $MOL - -INDIGO-09142313362D + -INDIGO-09182323112D 10 9 0 0 0 0 0 0 0 0999 V2000 3.2286 -8.6591 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 @@ -52,7 +52,7 @@ M SDI 1 4 0.0000 0.0000 0.0000 0.0000 M END $MOL - -INDIGO-09142313362D + -INDIGO-09182323112D 17 17 0 0 0 0 0 0 0 0999 V2000 20.4404 -9.2536 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 From 18e9b5c286549bf205b4a1ce7fb7294ba8c48395 Mon Sep 17 00:00:00 2001 From: Mikhail Zhirnov Date: Fri, 6 Oct 2023 14:48:38 +0300 Subject: [PATCH 4/5] - code refactoring --- .../Rxn-Files/rxn-files.spec.ts | 49 +--- ...ed-RXN-2000-3000-file-1-chromium-linux.png | Bin 18514 -> 20890 bytes ...ps-with-unsupported-s-group-type-V3000.rxn | 264 ------------------ ...on-with-atom-and-bond-properties-saved.rxn | 4 +- ...-groups-with-unsupported-s-group-type.rxn} | 0 ...ucture-with-two-reaction-arrows-saved.rxn} | 6 +- .../reaction-with-several-components.rxn | 0 ...-groups-with-unsupported-s-group-type.rxn} | 0 ...e-with-two-reaction-arrows-saved-v3000.rxn | 48 ++++ ...ucture-with-two-reaction-arrows-saved.rxn} | 6 +- .../test-data/heteroatoms-expectedV2000.rxn | 10 +- .../test-data/r-group-V3000-expectedV3000.rxn | 2 +- .../test-data/sec-butyl-abr-expectedV2000.rxn | 8 +- 13 files changed, 78 insertions(+), 319 deletions(-) delete mode 100644 ketcher-autotests/tests/test-data/RXN/structure-with-s-groups-with-unsupported-s-group-type-V3000.rxn rename ketcher-autotests/tests/test-data/{RXN => Rxn-V2000}/reaction-with-atom-and-bond-properties-saved.rxn (93%) rename ketcher-autotests/tests/test-data/{RXN/structure-with-s-groups-with-unsupported-s-group-type-V2000.rxn => Rxn-V2000/structure-with-s-groups-with-unsupported-s-group-type.rxn} (100%) rename ketcher-autotests/tests/test-data/{RXN/structure-with-two-reaction-arrows-v2000-saved.rxn => Rxn-V2000/structure-with-two-reaction-arrows-saved.rxn} (94%) rename ketcher-autotests/tests/test-data/{RXN => Rxn-V3000}/reaction-with-several-components.rxn (100%) rename ketcher-autotests/tests/test-data/{RXN/reaction-with-several-components-v3000.rxn => Rxn-V3000/structure-with-s-groups-with-unsupported-s-group-type.rxn} (100%) create mode 100644 ketcher-autotests/tests/test-data/Rxn-V3000/structure-with-two-reaction-arrows-saved-v3000.rxn rename ketcher-autotests/tests/test-data/{RXN/structure-with-two-reaction-arrows-v3000-saved.rxn => Rxn-V3000/structure-with-two-reaction-arrows-saved.rxn} (94%) diff --git a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts index d33a7cef2e..facfa99df3 100644 --- a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts +++ b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts @@ -7,13 +7,8 @@ import { drawBenzeneRing, getCoordinatesTopAtomOfBenzeneRing, clickOnAtom, - clickOnBond, - BondTool, selectNestedTool, ArrowTool, - selectAtomInToolbar, - AtomButton, - BondType, clickOnTheCanvas, selectTopPanelButton, TopPanelButton, @@ -54,30 +49,10 @@ test.describe('Tests for Open and Save RXN file operations', () => { * Test case: EPMLSOPKET-1897 * Description: Reaction with atom and bond properties */ - const xOffsetFromCenter = 40; - await drawBenzeneRing(page); - await selectNestedTool(page, BondTool.SINGLE_AROMATIC); - await clickOnBond(page, BondType.DOUBLE, 1); - await selectNestedTool(page, BondTool.TRIPPLE); - await clickOnBond(page, BondType.DOUBLE, 1); - await selectAtomInToolbar(AtomButton.Nitrogen, page); - await clickOnAtom(page, 'C', 1); - await selectNestedTool(page, ArrowTool.ARROW_FILLED_BOW); - await clickOnTheCanvas(page, xOffsetFromCenter, 0); - - const expectedFile = await getRxn(page); - await saveToFile( - 'RXN/reaction-with-atom-and-bond-properties-saved.rxn', - expectedFile, - ); - - await selectAction(TopPanelButton.Clear, page); - await openFileAndAddToCanvas( - 'RXN/reaction-with-atom-and-bond-properties-saved.rxn', + 'Rxn-V2000/reaction-with-atom-and-bond-properties-saved.rxn', page, ); - await takeEditorScreenshot(page); }); @@ -143,16 +118,16 @@ test.describe('Tests for Open and Save RXN file operations', () => { * Description: Reaction from file that contains Sgroup */ await openFileAndAddToCanvas( - 'RXN/structure-with-s-groups-with-unsupported-s-group-type.rxn', + 'Rxn-V2000/structure-with-s-groups-with-unsupported-s-group-type.rxn', page, ); const expectedFile = await getRxn(page); await saveToFile( - 'RXN/structure-with-s-groups-with-unsupported-s-group-type-saved.rxn', + 'Rxn-V2000/structure-with-s-groups-with-unsupported-s-group-type-saved.rxn', expectedFile, ); await openFileAndAddToCanvas( - 'RXN/structure-with-s-groups-with-unsupported-s-group-type-saved.rxn', + 'Rxn-V2000/structure-with-s-groups-with-unsupported-s-group-type-saved.rxn', page, ); await takeEditorScreenshot(page); @@ -196,7 +171,7 @@ test.describe('Tests for Open and Save RXN file operations', () => { const yArrowEnd = yArrowStart + yDelta20; await page.mouse.move(xCoordinatesWithShiftHalf, yArrowStart); await dragMouseTo(xCoordinatesWithShiftHalf, yArrowEnd, page); - await savedFileInfoStartsWithRxn(page, true); + await savedFileInfoStartsWithRxn(page); await pressButton(page, 'Cancel'); await selectTopPanelButton(TopPanelButton.Clear, page); @@ -230,24 +205,24 @@ test.describe('Tests for Open and Save RXN file operations', () => { const expectedFileV2000 = await getRxn(page); await takeEditorScreenshot(page); await saveToFile( - 'RXN/structure-with-two-reaction-arrows-v2000-saved.rxn', + 'Rxn-V2000/structure-with-two-reaction-arrows-saved.rxn', expectedFileV2000, ); const expectedFileV3000 = await getRxn(page); await saveToFile( - 'RXN/structure-with-two-reaction-arrows-v3000-saved.rxn', + 'Rxn-V3000/structure-with-two-reaction-arrows-saved.rxn', expectedFileV3000, ); await selectAction(TopPanelButton.Clear, page); await openFileAndAddToCanvas( - 'RXN/structure-with-two-reaction-arrows-v3000-saved.rxn', + 'Rxn-V3000/structure-with-two-reaction-arrows-saved.rxn', page, ); await takeEditorScreenshot(page); await selectAction(TopPanelButton.Clear, page); await openFileAndAddToCanvas( - 'RXN/structure-with-two-reaction-arrows-v2000-saved.rxn', + 'Rxn-V2000/structure-with-two-reaction-arrows-saved.rxn', page, ); await takeEditorScreenshot(page); @@ -261,7 +236,7 @@ test.describe('Tests for Open and Save RXN file operations', () => { * Description: Import the structure from the saved RXN 2000/3000 file */ await openFileAndAddToCanvas( - 'RXN/reaction-with-several-components.rxn', + 'Rxn-V3000/reaction-with-several-components.rxn', page, ); await takeEditorScreenshot(page); @@ -275,7 +250,7 @@ test.describe('Tests for Open and Save RXN file operations', () => { * Description: Open the RXN v3000 file with S-Group Properties Type = Multiple group */ await openFileAndAddToCanvas( - 'RXN/structure-with-s-groups-with-unsupported-s-group-type-V3000.rxn', + 'Rxn-V3000/structure-with-s-groups-with-unsupported-s-group-type.rxn', page, ); await takeEditorScreenshot(page); @@ -289,7 +264,7 @@ test.describe('Tests for Open and Save RXN file operations', () => { * Description: Open the RXN v2000 file with S-Group Properties Type = Multiple group */ await openFileAndAddToCanvas( - 'RXN/structure-with-s-groups-with-unsupported-s-group-type-V2000.rxn', + 'Rxn-V2000/structure-with-s-groups-with-unsupported-s-group-type.rxn', page, ); await takeEditorScreenshot(page); diff --git a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Tests-for-Open-and-Save-RXN-file-operations-Op-891c7-e-structure-from-the-saved-RXN-2000-3000-file-1-chromium-linux.png b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Rxn-Files/rxn-files.spec.ts-snapshots/Tests-for-Open-and-Save-RXN-file-operations-Op-891c7-e-structure-from-the-saved-RXN-2000-3000-file-1-chromium-linux.png index 96b1fe3f7464018b4050fc303e2a396892e7a256..6ecdc1f7cd93c9c16fa7a43e1893cb9f21c357f2 100644 GIT binary patch literal 20890 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 literal 18514 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 y+hdI(=XJ%z(v(tiGGo>z`vReb-q)C;wRq8fvL Date: Fri, 6 Oct 2023 15:18:47 +0300 Subject: [PATCH 5/5] - updated path to file in folder --- ketcher-autotests/tests/Templates/S-Groups/s-groups.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ketcher-autotests/tests/Templates/S-Groups/s-groups.spec.ts b/ketcher-autotests/tests/Templates/S-Groups/s-groups.spec.ts index 50bafc4939..40f1a185b6 100644 --- a/ketcher-autotests/tests/Templates/S-Groups/s-groups.spec.ts +++ b/ketcher-autotests/tests/Templates/S-Groups/s-groups.spec.ts @@ -22,7 +22,7 @@ test.describe('S-Groups', () => { Description: Open file with S-groups (with Unsupported S-group type GEN) and see that brackets in place for all S-Groups except DAT */ await openFileAndAddToCanvas( - 'structure-with-s-groups-with-unsupported-s-group-type.rxn', + 'Rxn-V2000/structure-with-s-groups-with-unsupported-s-group-type.rxn', page, ); });