diff --git a/ketcher-autotests/playwright.config.ts b/ketcher-autotests/playwright.config.ts index 498e39d05c..164bec1bb8 100644 --- a/ketcher-autotests/playwright.config.ts +++ b/ketcher-autotests/playwright.config.ts @@ -67,7 +67,7 @@ const config: PlaywrightTestConfig = { /* Run tests in files in parallel */ fullyParallel: true, /* Fail the build on CI if you accidentally left test.only in the source code. */ - forbidOnly: Boolean(process.env.CI_ENVIRONMENT), + forbidOnly: isCI, /* Retry on CI only */ retries: isCI ? MAX_NUMBER_OF_RETRIES : 0, /* Opt out of parallel tests on CI. */ diff --git a/ketcher-autotests/tests/API/api-set-get-molecule.spec.ts b/ketcher-autotests/tests/API/api-set-get-molecule.spec.ts index b8fc3a7708..f61f350a5f 100644 --- a/ketcher-autotests/tests/API/api-set-get-molecule.spec.ts +++ b/ketcher-autotests/tests/API/api-set-get-molecule.spec.ts @@ -10,7 +10,7 @@ import { receiveFileComparisonData, waitForSpinnerFinishedWork, clickInTheMiddleOfTheScreen, - waitForIndigoToLoad, + waitForPageInit, } from '@utils'; import { getAtomByIndex } from '@utils/canvas/atoms'; import { @@ -31,8 +31,7 @@ function filteredFile(file: string, filteredIndex: number): string { test.describe('Tests for API setMolecule/getMolecule', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); - await waitForIndigoToLoad(page); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/Examples/ketcher-api.spec.ts b/ketcher-autotests/tests/Examples/ketcher-api.spec.ts index 24bf998f3f..97fd6bcb48 100644 --- a/ketcher-autotests/tests/Examples/ketcher-api.spec.ts +++ b/ketcher-autotests/tests/Examples/ketcher-api.spec.ts @@ -1,9 +1,9 @@ import { test, expect } from '@playwright/test'; import { molV2000 } from '@tests/test-data/molV2000-result'; -import { clickInTheMiddleOfTheScreen } from '@utils'; +import { clickInTheMiddleOfTheScreen, waitForPageInit } from '@utils'; test('getting molV2000 from Ketcher API', async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); await page.getByRole('button', { name: 'Benzene (T)' }).click(); diff --git a/ketcher-autotests/tests/Examples/ketcher-canvas.spec.ts b/ketcher-autotests/tests/Examples/ketcher-canvas.spec.ts index dc38d432c9..0156ec5d78 100644 --- a/ketcher-autotests/tests/Examples/ketcher-canvas.spec.ts +++ b/ketcher-autotests/tests/Examples/ketcher-canvas.spec.ts @@ -15,11 +15,12 @@ import { clickOnAtom, BondTool, selectNestedTool, + waitForPageInit, } from '@utils'; test.describe('Drawing atom, Benzene ring, Single and Double Bond', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/Examples/ketcher-files.spec.ts b/ketcher-autotests/tests/Examples/ketcher-files.spec.ts index 45b45653ea..83fb3a8c60 100644 --- a/ketcher-autotests/tests/Examples/ketcher-files.spec.ts +++ b/ketcher-autotests/tests/Examples/ketcher-files.spec.ts @@ -1,8 +1,12 @@ import { test } from '@playwright/test'; -import { takeEditorScreenshot, openFileAndAddToCanvas } from '@utils'; +import { + takeEditorScreenshot, + openFileAndAddToCanvas, + waitForPageInit, +} from '@utils'; test('opening molfile', async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('display-abbrev-groups-example.mol', page); await takeEditorScreenshot(page); }); @@ -11,7 +15,7 @@ test('opening rnx files', async ({ page }) => { /* Test case: EPMLSOPKET-1839 */ - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('Rxn-V2000/1839-ketcher.rxn', page); await takeEditorScreenshot(page); }); @@ -20,7 +24,7 @@ test('opening smi files', async ({ page }) => { /* Test case: EPMLSOPKET-1840 */ - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('SMILES/1840-cyclopentyl.smi', page); await takeEditorScreenshot(page); }); @@ -29,7 +33,7 @@ test('opening inchi files', async ({ page }) => { /* Test case: EPMLSOPKET-1841 */ - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('InChI/1841-ketcher.inchi', page); await takeEditorScreenshot(page); }); diff --git a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/CDX-Files/cdx-files.spec.ts b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/CDX-Files/cdx-files.spec.ts index e91ecc8138..b819517ef3 100644 --- a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/CDX-Files/cdx-files.spec.ts +++ b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/CDX-Files/cdx-files.spec.ts @@ -6,13 +6,12 @@ import { openFileAndAddToCanvas, takeEditorScreenshot, pasteFromClipboardAndAddToCanvas, - waitForIndigoToLoad, } from '@utils'; +import { waitForPageInit } from '@utils/common/loaders/waitForPageInit'; test.describe('CDX files', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); - await waitForIndigoToLoad(page); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/CDXML-Enhanced-Stereochemistry/cdxml-enhanced-stereochemistry.spec.ts b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/CDXML-Enhanced-Stereochemistry/cdxml-enhanced-stereochemistry.spec.ts index b1209cd5db..5e53cfb048 100644 --- a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/CDXML-Enhanced-Stereochemistry/cdxml-enhanced-stereochemistry.spec.ts +++ b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/CDXML-Enhanced-Stereochemistry/cdxml-enhanced-stereochemistry.spec.ts @@ -8,6 +8,7 @@ import { receiveFileComparisonData, saveToFile, clickOnAtom, + waitForPageInit, } from '@utils'; import { getCdxml } from '@utils/formats'; @@ -24,7 +25,7 @@ async function selectRadioButtonForNewGroup( test.describe('CDXML Enhanced Stereochemistry', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { @@ -78,7 +79,7 @@ test.describe('CDXML Enhanced Stereochemistry', () => { test.describe('CDXML Enhanced Stereochemistry', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test('AND stereo marks - Save as *.cdxml file', async ({ page }) => { diff --git a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Cml-files/cml-files.spec.ts b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Cml-files/cml-files.spec.ts index 44d8eb9727..4e307f9032 100644 --- a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Cml-files/cml-files.spec.ts +++ b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Cml-files/cml-files.spec.ts @@ -6,8 +6,8 @@ import { openFileAndAddToCanvas, saveToFile, delay, - waitForIndigoToLoad, } from '@utils'; +import { waitForPageInit } from '@utils/common/loaders/waitForPageInit'; import { getCml } from '@utils/formats'; async function openFileAddToCanvasTakeScreenshot(page: Page, fileName: string) { @@ -17,8 +17,7 @@ async function openFileAddToCanvasTakeScreenshot(page: Page, fileName: string) { test.describe('CML files', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); - await waitForIndigoToLoad(page); + await waitForPageInit(page); }); test('Open and Save files - CML - CML for empty canvas', async ({ page }) => { diff --git a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/InChi/InChi.spec.ts b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/InChi/InChi.spec.ts index c56d771519..3ef297c37c 100644 --- a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/InChi/InChi.spec.ts +++ b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/InChi/InChi.spec.ts @@ -5,11 +5,12 @@ import { openFromFileViaClipboard, selectTopPanelButton, TopPanelButton, + waitForPageInit, } from '@utils'; test.describe('', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/KET-Files/ket-files-properties.spec.ts b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/KET-Files/ket-files-properties.spec.ts index ab66d3c9bd..8633671203 100644 --- a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/KET-Files/ket-files-properties.spec.ts +++ b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/KET-Files/ket-files-properties.spec.ts @@ -4,13 +4,14 @@ import { openFileAndAddToCanvas, receiveFileComparisonData, saveToFile, + waitForPageInit, } from '@utils'; import { getKet } from '@utils/formats'; test('Open KET file with properties and check properties are saved in struct', async ({ page, }) => { - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('KET/ket-with-properties.ket', page); @@ -43,7 +44,7 @@ test('Open KET file with properties and check properties are saved in struct', a }); test('Save a structure with properties to KET format', async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('KET/ket-with-properties.ket', page); diff --git a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/MOL-Files/mol-files.spec.ts b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/MOL-Files/mol-files.spec.ts index b9103df661..76f1833392 100644 --- a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/MOL-Files/mol-files.spec.ts +++ b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/MOL-Files/mol-files.spec.ts @@ -5,7 +5,7 @@ import { receiveFileComparisonData, openFileAndAddToCanvas, saveToFile, - waitForIndigoToLoad, + waitForPageInit, } from '@utils'; import { getMolfile } from '@utils/formats'; @@ -16,7 +16,7 @@ test('Open and Save files - Open/Save structure with atom properties 1/2 - open' * Test case: EPMLSOPKET-1855(1) * Description: Sctucrute with atom properties is opened and saved correctly */ - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('mol_1855_to_open.mol', page); // check that structure opened from file is displayed correctly @@ -30,7 +30,7 @@ test('Open and Save files - Open/Save structure with atom properties 2/2 - save' * Test case: EPMLSOPKET-1855(2) * Description: Sctucrute with atom properties is opened and saved correctly */ - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('mol_1855_to_open.mol', page); const expectedFile = await getMolfile(page, 'v2000'); @@ -55,7 +55,7 @@ test('Open and Save file - Open/Save V3000 file with atom and bond properties 1/ * Test case: EPMLSOPKET-1857(1) * Description: Strucrute with atom and bond properties is opened and saved correctly */ - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('Marvin_Atom_properties_V3000.mol', page); // check that structure opened from file is displayed correctly @@ -69,7 +69,7 @@ test('Open and Save file - Open/Save V3000 file with atom and bond properties 2/ * Test case: EPMLSOPKET-1857(2) * Description: Strucrute with atom and bond properties is opened and saved correctly */ - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('Marvin_Atom_properties_V3000.mol', page); const expectedFile = await getMolfile(page, 'v3000'); @@ -99,8 +99,7 @@ test('Open and Save file - Open/Save Markush files 1/2 - open', async ({ * Test case: EPMLSOPKET-1894(1) * Description: Markush structure is displayed as an RGroup structure. */ - await page.goto(''); - await waitForIndigoToLoad(page); + await waitForPageInit(page); await openFileAndAddToCanvas('Markush.mol', page); // check that structure opened from file is displayed correctly @@ -114,7 +113,7 @@ test('Open and Save file - Open/Save Markush files 2/2 - save', async ({ * Test case: EPMLSOPKET-1894(2) * Description: Markush structure is displayed as an RGroup structure. */ - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('Markush.mol', page); const expectedFile = await getMolfile(page, 'v2000'); @@ -140,7 +139,7 @@ test('Open and Save file - Open/Save V2000 *.mol file contains abbreviation 1/2 * Test case: EPMLSOPKET-1858(1) * Description: v2000 mol file with abbreviation is opened and saved correctly */ - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('sec_butyl_abr.mol', page); // check that structure opened from file is displayed correctly @@ -154,7 +153,7 @@ test('Open and Save file - Open/Save V2000 *.mol file contains abbreviation 2/2 * Test case: EPMLSOPKET-1858(2) * Description: v2000 mol file with abbreviation is opened and saved correctly */ - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('sec_butyl_abr.mol', page); const expectedFile = await getMolfile(page, 'v2000'); @@ -180,7 +179,7 @@ test('Open and Save file - Open/Save V3000 *.mol file contains abbreviation 1/2 * Test case: EPMLSOPKET-1859(1) * Description: v3000 mol file with abbreviation is opened and saved correctly */ - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('sec_butyl_abr_V3000.mol', page); // check that structure opened from file is displayed correctly @@ -194,7 +193,7 @@ test('Open and Save file - Open/Save V3000 *.mol file contains abbreviation 2/2 * Test case: EPMLSOPKET-1859(2) * Description: v3000 mol file with abbreviation is opened and saved correctly */ - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('sec_butyl_abr_V3000.mol', page); const expectedFile = await getMolfile(page, 'v3000'); @@ -219,7 +218,7 @@ test('Open and Save file - Open/Save file with R-Groups 1/2 - open', async ({ * Test case: EPMLSOPKET-1873(1) * Description: Structure with R-Groups is correctly opened from Mol file */ - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('Rgroup.mol', page); // check that structure opened from file is displayed correctly @@ -233,7 +232,7 @@ test('Open and Save file - Open/Save file with R-Groups 2/2 - save', async ({ * Test case: EPMLSOPKET-1873(2) * Description: Structure with R-Groups is correctly saved to Mol file */ - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('Rgroup.mol', page); const expectedFile = await getMolfile(page, 'v2000'); @@ -259,8 +258,7 @@ test('Open and Save file - Open/Save file contains Heteroatoms 1/2 - open', asyn * Test case: EPMLSOPKET-1878(1) * Description: Structure with heteroatoms is opened from mol file correctly */ - await page.goto(''); - await waitForIndigoToLoad(page); + await waitForPageInit(page); await openFileAndAddToCanvas('Heteroatoms.mol', page); // check that structure opened from file is displayed correctly @@ -274,7 +272,7 @@ test('Open and Save file - Open/Save file contains Heteroatoms 2/2 - save', asyn * Test case: EPMLSOPKET-1878(2) * Description: Structure with heteroatoms is saved to mol file correctly */ - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('Heteroatoms.mol', page); const expectedFile = await getMolfile(page, 'v2000'); @@ -298,7 +296,7 @@ test('Open and Save file - Open/Save V3000 mol file contains attached data 1/2 - * Test case: EPMLSOPKET-1882(1) * Description: Structure with attached data is opened from mol file correctly */ - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('Molfiles-V3000/attached-data-V3000.mol', page); // check that structure opened from file is displayed correctly @@ -312,7 +310,7 @@ test('Open and Save file - Open/Save V3000 mol file contains attached data 2/2 - * Test case: EPMLSOPKET-1882(2) * Description: Structure with attached data is saved to mol file correctly */ - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('Molfiles-V3000/attached-data-V3000.mol', page); const expectedFile = await getMolfile(page, 'v3000'); @@ -341,7 +339,7 @@ test('Open and Save file - V3000 *.mol file contains Heteroatoms 1/2 - open', as * Test case: EPMLSOPKET-1879(1) * Description: Structure with heteroatoms is opened from mol v3000 file correctly */ - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('Heteroatoms_V3000.mol', page); // check that structure opened from file is displayed correctly @@ -355,7 +353,7 @@ test('Open and Save file - V3000 *.mol file contains Heteroatoms 2/2 - save', as * Test case: EPMLSOPKET-1879(2) * Description: Structure with heteroatoms is saved correctly to mol file */ - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('Heteroatoms_V3000.mol', page); const expectedFile = await getMolfile(page, 'v3000'); @@ -380,7 +378,7 @@ test('Open and Save file - Open/Save file with Attached data 1/2 - open', async * Test case: EPMLSOPKET-1880(1) * Description: Structure with heteroatoms is opened from mol v3000 file correctly */ - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('Molfiles-V2000/attached-data.mol', page); // check that structure opened from file is displayed correctly @@ -394,7 +392,7 @@ test('Open and Save file - Open/Save file with Attached data 2/2 - save', async * Test case: EPMLSOPKET-1880(2) * Description: Structure with heteroatoms is saved correctly to mol file */ - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('Molfiles-V2000/attached-data.mol', page); const expectedFile = await getMolfile(page, 'v2000'); @@ -420,7 +418,7 @@ test('Open and Save file - Open/Save file contains abs stereochemistry 1/2 - ope * Test case: EPMLSOPKET-1883(1) * Description: File with abs stereochemistry is opened correctly from mol file */ - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('V2000_abs.mol', page); // check that structure opened from file is displayed correctly @@ -434,7 +432,7 @@ test('Open and Save file - Open/Save file contains abs stereochemistry 2/2 - sav * Test case: EPMLSOPKET-1883(2) * Description: Structure with abs stereochemistry is saved correctly to mol file */ - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('V2000_abs.mol', page); const expectedFile = await getMolfile(page, 'v2000'); @@ -459,7 +457,7 @@ test('Open and Save file - Open/Save V3000 mol file contains abs stereochemistry * Test case: EPMLSOPKET-1884(1) * Description: File with abs stereochemistry is opened correctly from mol v3000 file */ - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('V3000_abs.mol', page); // check that structure opened from file is displayed correctly @@ -473,7 +471,7 @@ test('Open and Save file - Open/Save V3000 mol file contains abs stereochemistry * Test case: EPMLSOPKET-1884(2) * Description: Structure with abs stereochemistry is saved correctly to mol file */ - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('V3000_abs.mol', page); const expectedFile = await getMolfile(page, 'v3000'); @@ -498,7 +496,7 @@ test('Open and Save file - Save V2000 molfile as V3000 molfile', async ({ * Test case: EPMLSOPKET-1985 * Description: Structure opened from V2000 molfile can be saved to V3000 molfile */ - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('spiro.mol', page); const expectedFile = await getMolfile(page, 'v3000'); @@ -524,7 +522,7 @@ test('Open and Save file - Save V3000 molfile as V2000 molfile', async ({ * Test case: EPMLSOPKET-1986 * Description: Structure opened from V3000 molfile can be saved to V2000 molfile */ - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('ketcher (4).mol', page); const expectedFile = await getMolfile(page, 'v2000'); @@ -544,7 +542,7 @@ test('Open and Save file - Save V3000 molfile as V2000 molfile', async ({ test('Open V3000 file with R-Groups with Fragments', async ({ page }) => { // Related Github issue https://github.com/epam/ketcher/issues/2774 - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('RGroup-With-Fragments.mol', page); await takeEditorScreenshot(page); }); diff --git a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/MOL-Files/mol-with-rbc-sub-unc-queries.spec.ts b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/MOL-Files/mol-with-rbc-sub-unc-queries.spec.ts index 9843dc6193..4b0e156cb6 100644 --- a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/MOL-Files/mol-with-rbc-sub-unc-queries.spec.ts +++ b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/MOL-Files/mol-with-rbc-sub-unc-queries.spec.ts @@ -1,12 +1,16 @@ import { test } from '@playwright/test'; -import { takeEditorScreenshot, openFileAndAddToCanvas } from '@utils'; +import { + takeEditorScreenshot, + openFileAndAddToCanvas, + waitForPageInit, +} from '@utils'; test('Open MOL file with RBC,SUB,UNC queries', async ({ page }) => { /* Test case: EPMLSOPKET-10114 Description: MOL file with RBC,SUB,UNC queries opens without errors */ - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('mol-with-queries-v3000.mol', page); await takeEditorScreenshot(page); diff --git a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Open-File/open-file.spec.ts b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Open-File/open-file.spec.ts index cbf7ebeaa2..57be9970a7 100644 --- a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Open-File/open-file.spec.ts +++ b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/Open-File/open-file.spec.ts @@ -10,15 +10,14 @@ import { openFileAndAddToCanvas, TopPanelButton, selectTopPanelButton, - waitForIndigoToLoad, + waitForPageInit, } from '@utils'; const X_OFFSET = 200; test.describe('open files with different formats', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); - await waitForIndigoToLoad(page); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { 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..b6d29b9042 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 @@ -4,6 +4,7 @@ import { receiveFileComparisonData, openFileAndAddToCanvas, saveToFile, + waitForPageInit, } from '@utils'; import { getRxn } from '@utils/formats'; @@ -14,7 +15,7 @@ test('Open and Save file - Reaction from file that contains abbreviation 1/2 - o * Test case: EPMLSOPKET-1899(1) * Description: Reaction with abbreviations is opened and saved correctly */ - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('sec_butyl_abr.rxn', page); // check that structure opened from file is displayed correctly @@ -28,7 +29,7 @@ test('Open and Save file - Reaction from file that contains abbreviation 2/2 - s * Test case: EPMLSOPKET-1899(2) * Description: Reaction with abbreviations is opened and saved correctly */ - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('sec_butyl_abr.rxn', page); const expectedFile = await getRxn(page, 'v2000'); @@ -54,7 +55,7 @@ test('Open and Save file - Reaction from file that contains Heteroatoms 1/2 - op * Test case: EPMLSOPKET-1904(1) * Description: Reaction with heteroatoms is opened and saved correctly */ - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('Heteroatoms.rxn', page); // check that structure opened from file is displayed correctly @@ -68,7 +69,7 @@ test('Open and Save file - Reaction from file that contains Heteroatoms 2/2 - sa * Test case: EPMLSOPKET-1904(2) * Description: Reaction with heteroatoms is opened and saved correctly */ - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('Heteroatoms.rxn', page); const expectedFile = await getRxn(page, 'v2000'); @@ -94,7 +95,7 @@ test('Open and Save file - V3000 rxn file contains Rgroup 1/2 - open', async ({ * Test case: EPMLSOPKET-1902(1) * Description: Reaction can be opened correctly from rxn V3000 file */ - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('Rgroup_V3000.rxn', page); // check that structure opened from file is displayed correctly @@ -108,7 +109,7 @@ test('Open and Save file - V3000 rxn file contains Rgroup 2/2 - save', async ({ * Test case: EPMLSOPKET-1902(2) * Description: Reaction can be saved correctly to rxn V3000 file */ - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('Rgroup_V3000.rxn', page); const expectedFile = await getRxn(page, 'v3000'); diff --git a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/SDF-Files/sdf-files.spec.ts b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/SDF-Files/sdf-files.spec.ts index 90b90f4011..e53855f46b 100644 --- a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/SDF-Files/sdf-files.spec.ts +++ b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/SDF-Files/sdf-files.spec.ts @@ -5,11 +5,12 @@ import { openFileAndAddToCanvas, saveToFile, takeEditorScreenshot, + waitForPageInit, } from '@utils'; import { getSdf } from '@utils/formats'; test('Open SDF v2000 file and save it', async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('SDF/sdf-v2000-to-open.sdf', page); try { @@ -32,7 +33,7 @@ test('Open SDF v2000 file and save it', async ({ page }) => { }); test('Open SDF v3000 file and save it', async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('SDF/sdf-v3000-to-open.sdf', page); try { @@ -55,7 +56,7 @@ test('Open SDF v3000 file and save it', async ({ page }) => { }); test('Open SDF V2000 file and place it on canvas', async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('SDF/sdf-v2000-to-open.sdf', page); // check that structure opened from file is displayed correctly @@ -63,7 +64,7 @@ test('Open SDF V2000 file and place it on canvas', async ({ page }) => { }); test('Open SDF V3000 file and place it on canvas', async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('SDF/sdf-v3000-to-open.sdf', page); // check that structure opened from file is displayed correctly diff --git a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/cdxml-files.spec.ts b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/cdxml-files.spec.ts index bac918dd95..a3cb6f89f4 100644 --- a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/cdxml-files.spec.ts +++ b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/cdxml-files.spec.ts @@ -11,12 +11,13 @@ import { LeftPanelButton, receiveFileComparisonData, saveToFile, + waitForPageInit, } from '@utils'; import { getCdxml } from '@utils/formats'; test.describe('Tests for API setMolecule/getMolecule', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/save-file.spec.ts b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/save-file.spec.ts index 95fde41d3c..6df6ac20ef 100644 --- a/ketcher-autotests/tests/File-Management/Open-And-Save-Files/save-file.spec.ts +++ b/ketcher-autotests/tests/File-Management/Open-And-Save-Files/save-file.spec.ts @@ -1,6 +1,11 @@ /* eslint-disable no-magic-numbers */ import { test, expect } from '@playwright/test'; -import { drawBenzeneRing, receiveFileComparisonData, saveToFile } from '@utils'; +import { + drawBenzeneRing, + receiveFileComparisonData, + saveToFile, + waitForPageInit, +} from '@utils'; import { drawReactionWithTwoBenzeneRings } from '@utils/canvas/drawStructures'; import { getKet, getMolfile, getRxn } from '@utils/formats'; @@ -13,7 +18,7 @@ test('Save file - Save *.rxn file', async ({ page }) => { * Test case: EPMLSOPKET-1849 * Description: Reaction is saved correctly in .rxn file */ - await page.goto(''); + await waitForPageInit(page); await drawReactionWithTwoBenzeneRings( page, @@ -43,7 +48,7 @@ test('Save file - Save *.mol file', async ({ page }) => { * Test case: EPMLSOPKET-1848 * Description: Structure (benzine ring) is saved correctly to .mol format */ - await page.goto(''); + await waitForPageInit(page); await drawBenzeneRing(page); @@ -68,7 +73,7 @@ test('Save file - Save *.ket file', async ({ page }) => { * Test case: EPMLSOPKET-2934 * Description: Sctuctures are saved correctly in .ket file */ - await page.goto(''); + await waitForPageInit(page); await drawReactionWithTwoBenzeneRings( page, diff --git a/ketcher-autotests/tests/File-Management/Smile-Files/smile-files.spec.ts b/ketcher-autotests/tests/File-Management/Smile-Files/smile-files.spec.ts index b4f0e679e4..f57bf1dfcc 100644 --- a/ketcher-autotests/tests/File-Management/Smile-Files/smile-files.spec.ts +++ b/ketcher-autotests/tests/File-Management/Smile-Files/smile-files.spec.ts @@ -11,7 +11,7 @@ import { clickInTheMiddleOfTheScreen, DELAY_IN_SECONDS, waitForLoad, - waitForIndigoToLoad, + waitForPageInit, } from '@utils'; import { getSmiles } from '@utils/formats'; @@ -45,8 +45,7 @@ async function clearCanvasAndPasteSmiles(page: Page, smiles: string) { test.describe('SMILES files', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); - await waitForIndigoToLoad(page); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/Indigo-Tools/Aromatize-Dearomatize/aromatize-dearomatize.spec.ts b/ketcher-autotests/tests/Indigo-Tools/Aromatize-Dearomatize/aromatize-dearomatize.spec.ts index b37d278787..b800aac6d8 100644 --- a/ketcher-autotests/tests/Indigo-Tools/Aromatize-Dearomatize/aromatize-dearomatize.spec.ts +++ b/ketcher-autotests/tests/Indigo-Tools/Aromatize-Dearomatize/aromatize-dearomatize.spec.ts @@ -15,8 +15,8 @@ import { selectAllStructuresOnCanvas, receiveFileComparisonData, saveToFile, - waitForIndigoToLoad, waitForSpinnerFinishedWork, + waitForPageInit, } from '@utils'; import { getCml, getMolfile, getRxn, getSmiles } from '@utils/formats'; @@ -25,8 +25,7 @@ const CANVAS_CLICK_Y = 200; test.describe('Aromatize/Dearomatize Tool', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); - await waitForIndigoToLoad(page); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/Indigo-Tools/Calculate-CIP-Tool/calculate-cip-tool.spec.ts b/ketcher-autotests/tests/Indigo-Tools/Calculate-CIP-Tool/calculate-cip-tool.spec.ts index ee5e871504..84c0b40f50 100644 --- a/ketcher-autotests/tests/Indigo-Tools/Calculate-CIP-Tool/calculate-cip-tool.spec.ts +++ b/ketcher-autotests/tests/Indigo-Tools/Calculate-CIP-Tool/calculate-cip-tool.spec.ts @@ -22,7 +22,7 @@ import { saveToFile, BondTool, selectNestedTool, - waitForIndigoToLoad, + waitForPageInit, } from '@utils'; import { getAtomByIndex } from '@utils/canvas/atoms'; import { getBondByIndex } from '@utils/canvas/bonds'; @@ -31,8 +31,7 @@ import { getKet, getMolfile } from '@utils/formats'; test.describe('Indigo Tools - Calculate CIP Tool', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); - await waitForIndigoToLoad(page); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { @@ -342,7 +341,7 @@ test.describe('Indigo Tools - Calculate CIP Tool', () => { test.describe('Indigo Tools - Calculate CIP Tool', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test('Check .ket file CIP data must be moved from s-group properties to atom properties', async ({ diff --git a/ketcher-autotests/tests/Indigo-Tools/Calculated-Values-Tool/calculated-values.spec.ts b/ketcher-autotests/tests/Indigo-Tools/Calculated-Values-Tool/calculated-values.spec.ts index ebc523723d..b0a058d19d 100644 --- a/ketcher-autotests/tests/Indigo-Tools/Calculated-Values-Tool/calculated-values.spec.ts +++ b/ketcher-autotests/tests/Indigo-Tools/Calculated-Values-Tool/calculated-values.spec.ts @@ -13,13 +13,14 @@ import { getCoordinatesOfTheMiddleOfTheScreen, selectAtomInToolbar, AtomButton, + waitForPageInit, } from '@utils'; import { getAtomByIndex } from '@utils/canvas/atoms'; import { getBondByIndex } from '@utils/canvas/bonds'; test.describe('Calculated Values Tools', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { @@ -646,7 +647,7 @@ test.describe('Calculated Values Tools', () => { test.describe('Calculated Values Tools', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test('Structure Check window', async ({ page }) => { diff --git a/ketcher-autotests/tests/Indigo-Tools/Clean-Tools/clean-tools.spec.ts b/ketcher-autotests/tests/Indigo-Tools/Clean-Tools/clean-tools.spec.ts index 98715c1f1a..fddb745e6c 100644 --- a/ketcher-autotests/tests/Indigo-Tools/Clean-Tools/clean-tools.spec.ts +++ b/ketcher-autotests/tests/Indigo-Tools/Clean-Tools/clean-tools.spec.ts @@ -10,11 +10,12 @@ import { takeEditorScreenshot, DELAY_IN_SECONDS, waitForLoad, + waitForPageInit, } from '@utils'; test.describe('Indigo Tools - Clean Tools', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.fixme('Clean bonds lenght', async ({ page }) => { diff --git a/ketcher-autotests/tests/Indigo-Tools/Enhanced-Stereochemistry/enhanced-stereochemistry.spec.ts b/ketcher-autotests/tests/Indigo-Tools/Enhanced-Stereochemistry/enhanced-stereochemistry.spec.ts index 97b929189b..a00028dcd5 100644 --- a/ketcher-autotests/tests/Indigo-Tools/Enhanced-Stereochemistry/enhanced-stereochemistry.spec.ts +++ b/ketcher-autotests/tests/Indigo-Tools/Enhanced-Stereochemistry/enhanced-stereochemistry.spec.ts @@ -21,6 +21,7 @@ import { clickOnAtom, BondTool, selectNestedTool, + waitForPageInit, } from '@utils'; import { getKet, getMolfile } from '@utils/formats'; @@ -86,7 +87,7 @@ async function selectRadioButtonForNewGroup( test.describe('Enhanced Stereochemistry Tool', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/Indigo-Tools/Layout/layout.spec.ts b/ketcher-autotests/tests/Indigo-Tools/Layout/layout.spec.ts index ba8490a383..768e057424 100644 --- a/ketcher-autotests/tests/Indigo-Tools/Layout/layout.spec.ts +++ b/ketcher-autotests/tests/Indigo-Tools/Layout/layout.spec.ts @@ -7,6 +7,7 @@ import { pressButton, waitForLoad, getCoordinatesOfTheMiddleOfTheScreen, + waitForPageInit, } from '@utils'; async function openFileWithShift(filename: string, page: Page) { @@ -22,7 +23,7 @@ async function openFileWithShift(filename: string, page: Page) { test.describe('Indigo Tools - Layout', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test('Center molecule after layout', async ({ page }) => { diff --git a/ketcher-autotests/tests/Indigo-Tools/Reaction Auto-mapping tool/reaction-am-tool-veryfing-button.spec.ts b/ketcher-autotests/tests/Indigo-Tools/Reaction Auto-mapping tool/reaction-am-tool-veryfing-button.spec.ts index 8b9259be6b..b9e3cf00ed 100644 --- a/ketcher-autotests/tests/Indigo-Tools/Reaction Auto-mapping tool/reaction-am-tool-veryfing-button.spec.ts +++ b/ketcher-autotests/tests/Indigo-Tools/Reaction Auto-mapping tool/reaction-am-tool-veryfing-button.spec.ts @@ -13,11 +13,12 @@ import { selectLeftPanelButton, LeftPanelButton, mapTwoAtoms, + waitForPageInit, } from '@utils'; test.describe('Verifying buttons on reaction am tool dropdown', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/Indigo-Tools/Reaction Auto-mapping tool/reaction-am-tool-veryfing-button.spec.ts-snapshots/Verifying-buttons-on-reaction-am-tool-dropdown-Not-possible-when-the-reaction-is-absent-on-canvas-1-chromium-linux.png b/ketcher-autotests/tests/Indigo-Tools/Reaction Auto-mapping tool/reaction-am-tool-veryfing-button.spec.ts-snapshots/Verifying-buttons-on-reaction-am-tool-dropdown-Not-possible-when-the-reaction-is-absent-on-canvas-1-chromium-linux.png index b06752df37..6010532b9f 100644 Binary files a/ketcher-autotests/tests/Indigo-Tools/Reaction Auto-mapping tool/reaction-am-tool-veryfing-button.spec.ts-snapshots/Verifying-buttons-on-reaction-am-tool-dropdown-Not-possible-when-the-reaction-is-absent-on-canvas-1-chromium-linux.png and b/ketcher-autotests/tests/Indigo-Tools/Reaction Auto-mapping tool/reaction-am-tool-veryfing-button.spec.ts-snapshots/Verifying-buttons-on-reaction-am-tool-dropdown-Not-possible-when-the-reaction-is-absent-on-canvas-1-chromium-linux.png differ diff --git a/ketcher-autotests/tests/Macromolecule-editor/Chem-monomers/chem-add-to-canvas.spec.ts b/ketcher-autotests/tests/Macromolecule-editor/Chem-monomers/chem-add-to-canvas.spec.ts index f3c39fd63f..c8572acf6f 100644 --- a/ketcher-autotests/tests/Macromolecule-editor/Chem-monomers/chem-add-to-canvas.spec.ts +++ b/ketcher-autotests/tests/Macromolecule-editor/Chem-monomers/chem-add-to-canvas.spec.ts @@ -1,5 +1,5 @@ import { test } from '@playwright/test'; -import { clickInTheMiddleOfTheScreen } from '@utils'; +import { clickInTheMiddleOfTheScreen, waitForPageInit } from '@utils'; import { POLYMER_TOGGLER } from '../../../constants/testIdConstants'; /* @@ -7,7 +7,7 @@ Test case: #2497 - Add chem to canvas */ test.skip('Select chem and drag it to canvas', async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); // Click on POLYMER_TOGGLER await page.getByTestId(POLYMER_TOGGLER).click(); diff --git a/ketcher-autotests/tests/Macromolecule-editor/Chem-monomers/chem-library.spec.ts b/ketcher-autotests/tests/Macromolecule-editor/Chem-monomers/chem-library.spec.ts index 9257b16f7a..895984fb17 100644 --- a/ketcher-autotests/tests/Macromolecule-editor/Chem-monomers/chem-library.spec.ts +++ b/ketcher-autotests/tests/Macromolecule-editor/Chem-monomers/chem-library.spec.ts @@ -1,9 +1,10 @@ import { test, expect } from '@playwright/test'; import { POLYMER_TOGGLER } from '../../../constants/testIdConstants'; +import { waitForPageInit } from '@utils/common'; test.describe('Open Ketcher', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.skip('Switch to Polymer Editor', async ({ page }) => { /* diff --git a/ketcher-autotests/tests/Macromolecule-editor/Peptides/peptides-add-to-canvas.spec.ts b/ketcher-autotests/tests/Macromolecule-editor/Peptides/peptides-add-to-canvas.spec.ts index 63523f55ac..ddcf2ca731 100644 --- a/ketcher-autotests/tests/Macromolecule-editor/Peptides/peptides-add-to-canvas.spec.ts +++ b/ketcher-autotests/tests/Macromolecule-editor/Peptides/peptides-add-to-canvas.spec.ts @@ -1,5 +1,5 @@ import { test } from '@playwright/test'; -import { clickInTheMiddleOfTheScreen } from '@utils'; +import { clickInTheMiddleOfTheScreen, waitForPageInit } from '@utils'; import { POLYMER_TOGGLER } from '../../../constants/testIdConstants'; /* @@ -7,7 +7,7 @@ Test case: #3063 - Add e2e tests for Macromolecule editor */ test.skip('Select peptide and drag it to canvas', async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); // Click on POLYMER_TOGGLER await page.getByTestId(POLYMER_TOGGLER).click(); diff --git a/ketcher-autotests/tests/Macromolecule-editor/Polymer-Bond-Tool/polymer-bond-tool.spec.ts b/ketcher-autotests/tests/Macromolecule-editor/Polymer-Bond-Tool/polymer-bond-tool.spec.ts index 43b7ffef8b..62b1a30f4f 100644 --- a/ketcher-autotests/tests/Macromolecule-editor/Polymer-Bond-Tool/polymer-bond-tool.spec.ts +++ b/ketcher-autotests/tests/Macromolecule-editor/Polymer-Bond-Tool/polymer-bond-tool.spec.ts @@ -1,10 +1,10 @@ import { test, expect } from '@playwright/test'; -import { selectSingleBondTool } from '@utils'; +import { selectSingleBondTool, waitForPageInit } from '@utils'; /* eslint-disable no-magic-numbers */ test.describe('Polymer Bond Tool', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.skip('Create bond between two peptides', async ({ page }) => { /* diff --git a/ketcher-autotests/tests/Macromolecule-editor/RNAEditor/add-custom-preset.spec.ts b/ketcher-autotests/tests/Macromolecule-editor/RNAEditor/add-custom-preset.spec.ts index 45e8ac1211..2cf6c5eaf2 100644 --- a/ketcher-autotests/tests/Macromolecule-editor/RNAEditor/add-custom-preset.spec.ts +++ b/ketcher-autotests/tests/Macromolecule-editor/RNAEditor/add-custom-preset.spec.ts @@ -7,13 +7,14 @@ import { PHOSPHATE, BUTTON__ADD_TO_PRESETS, } from '../../../constants/testIdConstants'; +import { waitForPageInit } from '@utils/common'; /* Test case: #3063 - Add e2e tests for Macromolecule editor */ test.describe('Macromolecules custom presets', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); // Click on POLYMER_TOGGLER await page.getByTestId(POLYMER_TOGGLER).click(); @@ -90,7 +91,7 @@ test.describe('Macromolecules custom presets', () => { test.skip('Add new preset with two monomers and add it to canvas', async ({ page, }) => { - await page.goto(''); + await waitForPageInit(page); // Click on POLYMER_TOGGLER await page.getByTestId(POLYMER_TOGGLER).click(); diff --git a/ketcher-autotests/tests/Macromolecule-editor/RNAEditor/add-default-presets.spec.ts b/ketcher-autotests/tests/Macromolecule-editor/RNAEditor/add-default-presets.spec.ts index e7f253dda8..02ad3a3e3a 100644 --- a/ketcher-autotests/tests/Macromolecule-editor/RNAEditor/add-default-presets.spec.ts +++ b/ketcher-autotests/tests/Macromolecule-editor/RNAEditor/add-default-presets.spec.ts @@ -1,8 +1,9 @@ import { test, expect } from '@playwright/test'; +import { waitForPageInit } from '@utils/common'; test.describe('Macromolecules default presets', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.skip('Check Guanine in default presets', async ({ page }) => { /* diff --git a/ketcher-autotests/tests/R-group-tool/r-group-fragment-tool.spec.ts b/ketcher-autotests/tests/R-group-tool/r-group-fragment-tool.spec.ts index 8e701aeb80..b113a0b1e6 100644 --- a/ketcher-autotests/tests/R-group-tool/r-group-fragment-tool.spec.ts +++ b/ketcher-autotests/tests/R-group-tool/r-group-fragment-tool.spec.ts @@ -18,7 +18,7 @@ import { selectTopPanelButton, LeftPanelButton, selectLeftPanelButton, - waitForIndigoToLoad, + waitForPageInit, } from '@utils'; async function openRGroupModalForTopAtom(page: Page) { @@ -53,8 +53,7 @@ async function clickModalButton(page: Page, button: 'Apply' | 'Cancel') { test.describe('Open Ketcher', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); - await waitForIndigoToLoad(page); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/Reactions/Reaction-tools/Plus-and-Arrow-tools/plus-and-arrows-tools.spec.ts b/ketcher-autotests/tests/Reactions/Reaction-tools/Plus-and-Arrow-tools/plus-and-arrows-tools.spec.ts index 73e4e13abe..e0640a1432 100644 --- a/ketcher-autotests/tests/Reactions/Reaction-tools/Plus-and-Arrow-tools/plus-and-arrows-tools.spec.ts +++ b/ketcher-autotests/tests/Reactions/Reaction-tools/Plus-and-Arrow-tools/plus-and-arrows-tools.spec.ts @@ -23,6 +23,7 @@ import { LeftPanelButton, TopPanelButton, Point, + waitForPageInit, } from '@utils'; const xOffsetFromCenter = -35; @@ -78,12 +79,15 @@ test.describe('Plus and Arrows tools ', () => { const modifier = getControlModifier(); const CANVAS_CLICK_X = 300; const CANVAS_CLICK_Y = 300; + test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); + test.afterEach(async ({ page }) => { await takeEditorScreenshot(page); }); + test.describe('Create reactions', () => { /** * Test case: EPMLSOPKET-1783 diff --git a/ketcher-autotests/tests/Reagents/CDXML-Format/reagents-cdxml-format.spec.ts b/ketcher-autotests/tests/Reagents/CDXML-Format/reagents-cdxml-format.spec.ts index d2f2caf389..b8b7c9402c 100644 --- a/ketcher-autotests/tests/Reagents/CDXML-Format/reagents-cdxml-format.spec.ts +++ b/ketcher-autotests/tests/Reagents/CDXML-Format/reagents-cdxml-format.spec.ts @@ -10,6 +10,7 @@ import { FILE_TEST_DATA, DELAY_IN_SECONDS, waitForLoad, + waitForPageInit, } from '@utils'; import NH3TextAboveRequestData from '@tests/test-data/cdxml-nh3-text-above-request-data.json'; @@ -39,7 +40,7 @@ async function pasteCDXML(page: Page, fileFormat: string) { test.describe('Reagents CDXML format', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/Reagents/RXN-Format/reagents-rxn-format.spec.ts b/ketcher-autotests/tests/Reagents/RXN-Format/reagents-rxn-format.spec.ts index 679ce1c0f7..bcca953b41 100644 --- a/ketcher-autotests/tests/Reagents/RXN-Format/reagents-rxn-format.spec.ts +++ b/ketcher-autotests/tests/Reagents/RXN-Format/reagents-rxn-format.spec.ts @@ -11,7 +11,7 @@ import { FILE_TEST_DATA, saveToFile, waitForLoad, - waitForIndigoToLoad, + waitForPageInit, } from '@utils'; import { getRxn } from '@utils/formats'; @@ -51,7 +51,7 @@ async function pasteFromClipboard(page: Page, fileFormats: string) { test.describe('Reagents RXN format', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test('Detection molecule as reagent and write reagent information in "MDL rxnfile V2000" format', async ({ @@ -194,8 +194,7 @@ test.describe('Reagents RXN format', () => { test.describe('Reagents RXN format', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); - await waitForIndigoToLoad(page); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/Reagents/SMARTS-Format/reagents-smarts-format.spec.ts b/ketcher-autotests/tests/Reagents/SMARTS-Format/reagents-smarts-format.spec.ts index c55a34398c..a3df139db7 100644 --- a/ketcher-autotests/tests/Reagents/SMARTS-Format/reagents-smarts-format.spec.ts +++ b/ketcher-autotests/tests/Reagents/SMARTS-Format/reagents-smarts-format.spec.ts @@ -9,6 +9,7 @@ import { readFileContents, pasteFromClipboard, waitForLoad, + waitForPageInit, } from '@utils'; import { getSmarts } from '@utils/formats'; @@ -27,7 +28,7 @@ async function previewSmarts(page: Page) { test.describe('Reagents SMARTS format', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { @@ -120,7 +121,7 @@ test.describe('Reagents SMARTS format', () => { test.describe('Reagents SMARTS format', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test('File saves in "Daylight SMARTS" format', async ({ page }) => { diff --git a/ketcher-autotests/tests/Reagents/SMILES-Format/reagents-smiles-format.spec.ts b/ketcher-autotests/tests/Reagents/SMILES-Format/reagents-smiles-format.spec.ts index 6f1cdaaf4f..b3c00c49dc 100644 --- a/ketcher-autotests/tests/Reagents/SMILES-Format/reagents-smiles-format.spec.ts +++ b/ketcher-autotests/tests/Reagents/SMILES-Format/reagents-smiles-format.spec.ts @@ -7,7 +7,7 @@ import { openFileAndAddToCanvas, readFileContents, pasteFromClipboardAndAddToCanvas, - waitForIndigoToLoad, + waitForPageInit, } from '@utils'; import { getExtendedSmiles, @@ -42,8 +42,7 @@ async function saveExtendedSmiles(page: Page) { test.describe('Reagents SMILES format', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); - await waitForIndigoToLoad(page); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { @@ -99,7 +98,7 @@ test.describe('Reagents SMILES format', () => { }); test(`Detection molecule as reagent - and write reagent information in "Extended SMILES" format in "Preview" tab @check`, async ({ + and write reagent information in "Extended SMILES" format in "Preview" tab`, async ({ page, }) => { /* @@ -186,7 +185,7 @@ test.describe('Reagents SMILES format', () => { test.describe('Reagents SMILES format', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test('File saves in "Daylight SMILES" format', async ({ page }) => { diff --git a/ketcher-autotests/tests/Reagents/SMILES-Format/reagents-smiles-format.spec.ts-snapshots/Reagents-SMILES-format-Detection-molecule-as-r-fafa7--in-Extended-SMILES-format-in-Preview-tab-1-chromium-linux.png b/ketcher-autotests/tests/Reagents/SMILES-Format/reagents-smiles-format.spec.ts-snapshots/Reagents-SMILES-format-Detection-molecule-as-r-fafa7--in-Extended-SMILES-format-in-Preview-tab-1-chromium-linux.png index a1a493a1ab..0a5429796f 100644 Binary files a/ketcher-autotests/tests/Reagents/SMILES-Format/reagents-smiles-format.spec.ts-snapshots/Reagents-SMILES-format-Detection-molecule-as-r-fafa7--in-Extended-SMILES-format-in-Preview-tab-1-chromium-linux.png and b/ketcher-autotests/tests/Reagents/SMILES-Format/reagents-smiles-format.spec.ts-snapshots/Reagents-SMILES-format-Detection-molecule-as-r-fafa7--in-Extended-SMILES-format-in-Preview-tab-1-chromium-linux.png differ diff --git a/ketcher-autotests/tests/Reagents/reagents-molecule-above-arrow.spec.ts b/ketcher-autotests/tests/Reagents/reagents-molecule-above-arrow.spec.ts index 4cbd81accb..c6fde21434 100644 --- a/ketcher-autotests/tests/Reagents/reagents-molecule-above-arrow.spec.ts +++ b/ketcher-autotests/tests/Reagents/reagents-molecule-above-arrow.spec.ts @@ -6,13 +6,12 @@ import { openFileAndAddToCanvas, delay, DELAY_IN_SECONDS, - waitForIndigoToLoad, + waitForPageInit, } from '@utils'; test.describe('Reagents molecule above arrow', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); - await waitForIndigoToLoad(page); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/Reagents/reagents-molecule-below-arrow.spec.ts b/ketcher-autotests/tests/Reagents/reagents-molecule-below-arrow.spec.ts index 567831ff37..cae1b13dc8 100644 --- a/ketcher-autotests/tests/Reagents/reagents-molecule-below-arrow.spec.ts +++ b/ketcher-autotests/tests/Reagents/reagents-molecule-below-arrow.spec.ts @@ -4,13 +4,12 @@ import { TopPanelButton, takeEditorScreenshot, openFileAndAddToCanvas, - waitForIndigoToLoad, + waitForPageInit, } from '@utils'; test.describe('Reagents molecule below arrow', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); - await waitForIndigoToLoad(page); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { 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 a25c2d7a05..e4bd5f4000 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,6 +26,7 @@ import { screenshotBetweenUndoRedo, setAttachmentPoints, AttachmentPoint, + waitForPageInit, } from '@utils'; import { getAtomByIndex } from '@utils/canvas/atoms'; import { getRotationHandleCoordinates } from '@utils/clicks/selectButtonByTitle'; @@ -51,7 +52,7 @@ async function selectExtendedTableElements(page: Page, element: string) { test.describe('Attachment Point Tool', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/Erase-Tool/erase-tool.spec.ts b/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/Erase-Tool/erase-tool.spec.ts index ecd800700a..077487dabb 100644 --- a/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/Erase-Tool/erase-tool.spec.ts +++ b/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/Erase-Tool/erase-tool.spec.ts @@ -7,6 +7,7 @@ import { openFileAndAddToCanvas, LeftPanelButton, TopPanelButton, + waitForPageInit, } from '@utils'; import { RxnArrow, RxnPlus } from 'ketcher-core'; @@ -21,7 +22,7 @@ let point: { x: number; y: number }; test.describe('Erase Tool', () => { // TO DO: here in both tests we have some issue with openFileAndAddToCanvas() function it need proper investigation test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); await openFileAndAddToCanvas('benzene-bromobutane-reaction.rxn', page); await selectTool(LeftPanelButton.Erase, page); diff --git a/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/Paste-Action/paste-action.spec.ts b/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/Paste-Action/paste-action.spec.ts index ab5662e4ba..eb24862c11 100644 --- a/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/Paste-Action/paste-action.spec.ts +++ b/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/Paste-Action/paste-action.spec.ts @@ -3,12 +3,13 @@ import { openFileAndAddToCanvas, takeEditorScreenshot, selectAction, + waitForPageInit, } from '@utils'; import { TopPanelButton } from '@utils/selectors'; test.describe('Paste Tool', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test('InfoModal with hotkey display for Paste action', async ({ page }) => { diff --git a/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/R-group-tool/r-group-fragment-tool.spec.ts b/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/R-group-tool/r-group-fragment-tool.spec.ts index 0c11628fb1..bdcb5205e7 100644 --- a/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/R-group-tool/r-group-fragment-tool.spec.ts +++ b/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/R-group-tool/r-group-fragment-tool.spec.ts @@ -22,6 +22,7 @@ import { saveToFile, copyAndPaste, cutAndPaste, + waitForPageInit, } from '@utils'; import { getExtendedSmiles, getMolfile } from '@utils/formats'; @@ -57,7 +58,7 @@ async function clickModalButton(page: Page, button: 'Apply' | 'Cancel') { test.describe('Open Ketcher', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { @@ -303,7 +304,7 @@ test.describe('Open Ketcher', () => { test.describe('R-Group Fragment Tool', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test('Save as *.mol V2000 file', async ({ page }) => { diff --git a/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/R-group-tool/r-group-label-dialog.spec.ts b/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/R-group-tool/r-group-label-dialog.spec.ts index 471d66d951..b09d7be379 100644 --- a/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/R-group-tool/r-group-label-dialog.spec.ts +++ b/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/R-group-tool/r-group-label-dialog.spec.ts @@ -19,13 +19,14 @@ import { saveToFile, BondTypeName, selectBond, + waitForPageInit, } from '@utils'; import { getAtomByIndex } from '@utils/canvas/atoms'; import { getRxn, getSmiles } from '@utils/formats'; test.describe('R-Group Label Tool', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { @@ -429,7 +430,7 @@ test.describe('R-Group Label Tool', () => { test.describe('R-Group Label Tool', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test('Save as *.rxn file', async ({ page }) => { diff --git a/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/R-group-tool/r-group-tool.spec.ts b/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/R-group-tool/r-group-tool.spec.ts index 78c4022796..3ae3a6cb0d 100644 --- a/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/R-group-tool/r-group-tool.spec.ts +++ b/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/R-group-tool/r-group-tool.spec.ts @@ -8,12 +8,13 @@ import { screenshotBetweenUndoRedo, takeEditorScreenshot, takeLeftToolbarScreenshot, + waitForPageInit, } from '@utils'; import { getMolfile } from '@utils/formats'; test.describe('R-Group', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/Rotation/rotation.spec.ts b/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/Rotation/rotation.spec.ts index 729d65e3d7..345e82e140 100644 --- a/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/Rotation/rotation.spec.ts +++ b/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/Rotation/rotation.spec.ts @@ -3,6 +3,7 @@ import { getCoordinatesOfTheMiddleOfTheScreen, openFileAndAddToCanvas, takeEditorScreenshot, + waitForPageInit, } from '@utils'; import { getRotationHandleCoordinates } from '@utils/clicks/selectButtonByTitle'; import { @@ -24,7 +25,7 @@ import { test.describe('Rotation', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test('Cancel rotation on right click', async ({ page }) => { @@ -458,7 +459,7 @@ test.describe('Rotation', () => { test.describe('Rotation snapping', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test('for 90, 120 and 180 degrees', async ({ page }) => { diff --git a/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/S-Group-Tool/Data-S-Group-Tool/data-s-group-tool.spec.ts b/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/S-Group-Tool/Data-S-Group-Tool/data-s-group-tool.spec.ts index dc4ce4f0fb..67a4c1e27d 100644 --- a/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/S-Group-Tool/Data-S-Group-Tool/data-s-group-tool.spec.ts +++ b/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/S-Group-Tool/Data-S-Group-Tool/data-s-group-tool.spec.ts @@ -23,6 +23,7 @@ import { fillFieldByPlaceholder, screenshotBetweenUndoRedo, saveToFile, + waitForPageInit, } from '@utils'; import { getAtomByIndex } from '@utils/canvas/atoms'; import { getCml, getMolfile } from '@utils/formats'; @@ -65,7 +66,7 @@ async function selectSGroupProperties( test.describe('Data S-Group tool', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/S-Group-Tool/Data-S-Group-Tool/s-group-click-atom-bond.spec.ts b/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/S-Group-Tool/Data-S-Group-Tool/s-group-click-atom-bond.spec.ts index 759554643b..554d391d45 100644 --- a/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/S-Group-Tool/Data-S-Group-Tool/s-group-click-atom-bond.spec.ts +++ b/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/S-Group-Tool/Data-S-Group-Tool/s-group-click-atom-bond.spec.ts @@ -7,11 +7,12 @@ import { clickInTheMiddleOfTheScreen, takeEditorScreenshot, RingButton, + waitForPageInit, } from '@utils'; test.describe('S-Group Properties', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/S-Group-Tool/Multiple-S-Group-Tool/multiple-s-group-tool.spec.ts b/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/S-Group-Tool/Multiple-S-Group-Tool/multiple-s-group-tool.spec.ts index 359f510477..02c2453b01 100644 --- a/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/S-Group-Tool/Multiple-S-Group-Tool/multiple-s-group-tool.spec.ts +++ b/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/S-Group-Tool/Multiple-S-Group-Tool/multiple-s-group-tool.spec.ts @@ -23,6 +23,7 @@ import { selectNestedTool, AttachmentPoint, setAttachmentPoints, + waitForPageInit, } from '@utils'; import { getMolfile } from '@utils/formats'; @@ -48,7 +49,7 @@ async function selectMultipleGroup( test.describe('Multiple S-Group tool', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/S-Group-Tool/SRU-Polymer/sru-polymer-tool.spec.ts b/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/S-Group-Tool/SRU-Polymer/sru-polymer-tool.spec.ts index 106cc3c381..b6c1e407a9 100644 --- a/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/S-Group-Tool/SRU-Polymer/sru-polymer-tool.spec.ts +++ b/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/S-Group-Tool/SRU-Polymer/sru-polymer-tool.spec.ts @@ -20,6 +20,7 @@ import { selectLeftPanelButton, selectRingButton, takeEditorScreenshot, + waitForPageInit, } from '@utils'; import { getBondByIndex } from '@utils/canvas/bonds'; import { getMolfile } from '@utils/formats'; @@ -61,7 +62,7 @@ async function selectRepeatPattern( test.describe('SRU Polymer tool', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/S-Group-Tool/Superatom-S-Group-Tool/superatom-s-group-tool.spec.ts b/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/S-Group-Tool/Superatom-S-Group-Tool/superatom-s-group-tool.spec.ts index 7d768bb5d3..3fb9d17975 100644 --- a/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/S-Group-Tool/Superatom-S-Group-Tool/superatom-s-group-tool.spec.ts +++ b/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/S-Group-Tool/Superatom-S-Group-Tool/superatom-s-group-tool.spec.ts @@ -19,6 +19,7 @@ import { clickOnBond, screenshotBetweenUndoRedo, saveToFile, + waitForPageInit, } from '@utils'; import { getAtomByIndex } from '@utils/canvas/atoms'; import { getMolfile } from '@utils/formats'; @@ -61,7 +62,7 @@ async function contractExpandRemoveAbbreviation( test.describe('Superatom S-Group tool', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/Selection-Hover/simple-object-selection-and-hover.spec.ts b/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/Selection-Hover/simple-object-selection-and-hover.spec.ts index 577abafe2b..2f937d1329 100644 --- a/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/Selection-Hover/simple-object-selection-and-hover.spec.ts +++ b/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/Selection-Hover/simple-object-selection-and-hover.spec.ts @@ -6,11 +6,12 @@ import { getCoordinatesOfTheMiddleOfTheScreen, selectLeftPanelButton, takeEditorScreenshot, + waitForPageInit, } from '@utils'; test.describe('Selection and hover for simple objects', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { await takeEditorScreenshot(page); diff --git a/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/Selection-Tool/selection-tool.spec.ts b/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/Selection-Tool/selection-tool.spec.ts index 1998339546..23fac42cbb 100644 --- a/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/Selection-Tool/selection-tool.spec.ts +++ b/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/Selection-Tool/selection-tool.spec.ts @@ -20,11 +20,12 @@ import { fillFieldByPlaceholder, dragMouseTo, takeLeftToolbarScreenshot, + waitForPageInit, } from '@utils'; test.describe('Selection tools', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { @@ -288,7 +289,7 @@ test.describe('Selection tools', () => { test.describe('Selection tools', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test('Selection tools is not change when user press ESC button', async ({ diff --git a/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/Selection-Tool/selection-tool.spec.ts-snapshots/Selection-tools-Selection-tools-is-not-change-when-user-press-ESC-button-1-chromium-linux.png b/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/Selection-Tool/selection-tool.spec.ts-snapshots/Selection-tools-Selection-tools-is-not-change-when-user-press-ESC-button-1-chromium-linux.png index c8c22e09ba..e29cdb0032 100644 Binary files a/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/Selection-Tool/selection-tool.spec.ts-snapshots/Selection-tools-Selection-tools-is-not-change-when-user-press-ESC-button-1-chromium-linux.png and b/ketcher-autotests/tests/Structure-Creating-&-Editing/Actions-With-Structures/Selection-Tool/selection-tool.spec.ts-snapshots/Selection-tools-Selection-tools-is-not-change-when-user-press-ESC-button-1-chromium-linux.png differ diff --git a/ketcher-autotests/tests/Structure-Creating-&-Editing/Atom/Atom-Properties/atom-properties.spec.ts b/ketcher-autotests/tests/Structure-Creating-&-Editing/Atom/Atom-Properties/atom-properties.spec.ts index 05cb3fcc62..2b56b1df28 100644 --- a/ketcher-autotests/tests/Structure-Creating-&-Editing/Atom/Atom-Properties/atom-properties.spec.ts +++ b/ketcher-autotests/tests/Structure-Creating-&-Editing/Atom/Atom-Properties/atom-properties.spec.ts @@ -23,6 +23,7 @@ import { doubleClickOnAtom, moveOnAtom, clickOnAtom, + waitForPageInit, } from '@utils'; import { getMolfile, getRxn } from '@utils/formats'; @@ -168,7 +169,7 @@ async function selectElementFromExtendedTable( test.describe('Atom Properties', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/Structure-Creating-&-Editing/Atom/Atom-Tool/Atom-Generics/atom-generics-ui.spec.ts b/ketcher-autotests/tests/Structure-Creating-&-Editing/Atom/Atom-Tool/Atom-Generics/atom-generics-ui.spec.ts index 1bee41ebb6..cdb89d53bf 100644 --- a/ketcher-autotests/tests/Structure-Creating-&-Editing/Atom/Atom-Tool/Atom-Generics/atom-generics-ui.spec.ts +++ b/ketcher-autotests/tests/Structure-Creating-&-Editing/Atom/Atom-Tool/Atom-Generics/atom-generics-ui.spec.ts @@ -1,9 +1,14 @@ import { test } from '@playwright/test'; -import { takeEditorScreenshot, AtomButton, selectAtomInToolbar } from '@utils'; +import { + takeEditorScreenshot, + AtomButton, + selectAtomInToolbar, + waitForPageInit, +} from '@utils'; test.describe('Open and validate Extended table', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/Structure-Creating-&-Editing/Atom/Atom-Tool/Group-generic/extended-table-buttons.spec.ts b/ketcher-autotests/tests/Structure-Creating-&-Editing/Atom/Atom-Tool/Group-generic/extended-table-buttons.spec.ts index 23b1f08fca..379f964e9b 100644 --- a/ketcher-autotests/tests/Structure-Creating-&-Editing/Atom/Atom-Tool/Group-generic/extended-table-buttons.spec.ts +++ b/ketcher-autotests/tests/Structure-Creating-&-Editing/Atom/Atom-Tool/Group-generic/extended-table-buttons.spec.ts @@ -1,9 +1,14 @@ import { test } from '@playwright/test'; -import { takeEditorScreenshot, AtomButton, selectAtomInToolbar } from '@utils'; +import { + takeEditorScreenshot, + AtomButton, + selectAtomInToolbar, + waitForPageInit, +} from '@utils'; test.describe('Open and validate Extended table', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/Structure-Creating-&-Editing/Atom/Atom-Tool/click-and-drag-atom-on-canvas.spec.ts b/ketcher-autotests/tests/Structure-Creating-&-Editing/Atom/Atom-Tool/click-and-drag-atom-on-canvas.spec.ts index 2a21d6116f..449951fffa 100644 --- a/ketcher-autotests/tests/Structure-Creating-&-Editing/Atom/Atom-Tool/click-and-drag-atom-on-canvas.spec.ts +++ b/ketcher-autotests/tests/Structure-Creating-&-Editing/Atom/Atom-Tool/click-and-drag-atom-on-canvas.spec.ts @@ -16,12 +16,13 @@ import { resetCurrentTool, STRUCTURE_LIBRARY_BUTTON_NAME, moveOnAtom, + waitForPageInit, } from '@utils'; import { getAtomByIndex } from '@utils/canvas/atoms'; test.describe('Click and drag Atom on canvas', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/Structure-Creating-&-Editing/Atom/Atom-Tool/click-atom-on-canvas.spec.ts b/ketcher-autotests/tests/Structure-Creating-&-Editing/Atom/Atom-Tool/click-atom-on-canvas.spec.ts index 5768451ebc..e06bfc3c75 100644 --- a/ketcher-autotests/tests/Structure-Creating-&-Editing/Atom/Atom-Tool/click-atom-on-canvas.spec.ts +++ b/ketcher-autotests/tests/Structure-Creating-&-Editing/Atom/Atom-Tool/click-atom-on-canvas.spec.ts @@ -15,11 +15,12 @@ import { FunctionalGroups, resetCurrentTool, STRUCTURE_LIBRARY_BUTTON_NAME, + waitForPageInit, } from '@utils'; test.describe('Click Atom on canvas', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/Structure-Creating-&-Editing/Atom/Atom-Tool/drag-and-drop-atom.spec.ts b/ketcher-autotests/tests/Structure-Creating-&-Editing/Atom/Atom-Tool/drag-and-drop-atom.spec.ts index 94342fb6fe..36247cfee8 100644 --- a/ketcher-autotests/tests/Structure-Creating-&-Editing/Atom/Atom-Tool/drag-and-drop-atom.spec.ts +++ b/ketcher-autotests/tests/Structure-Creating-&-Editing/Atom/Atom-Tool/drag-and-drop-atom.spec.ts @@ -17,6 +17,7 @@ import { takeEditorScreenshot, resetCurrentTool, STRUCTURE_LIBRARY_BUTTON_NAME, + waitForPageInit, } from '@utils'; const X_DELTA_ONE = 100; @@ -24,7 +25,7 @@ const X_DELTA_TWO = 150; test.describe('Drag and drop Atom on canvas', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/Structure-Creating-&-Editing/Chain-Tool/chain-tool.spec.ts b/ketcher-autotests/tests/Structure-Creating-&-Editing/Chain-Tool/chain-tool.spec.ts index 69fd41e926..f7b896c8a2 100644 --- a/ketcher-autotests/tests/Structure-Creating-&-Editing/Chain-Tool/chain-tool.spec.ts +++ b/ketcher-autotests/tests/Structure-Creating-&-Editing/Chain-Tool/chain-tool.spec.ts @@ -12,6 +12,7 @@ import { getCoordinatesOfTheMiddleOfTheScreen, moveMouseToTheMiddleOfTheScreen, } from '@utils/clicks'; +import { waitForPageInit } from '@utils/common'; import { LeftPanelButton, RingButton, selectRing } from '@utils/selectors'; const DELTA = 100; @@ -20,7 +21,7 @@ let point: { x: number; y: number }; test.describe('Chain Tool drawing', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); await selectTool(LeftPanelButton.Chain, page); const center = await getCoordinatesOfTheMiddleOfTheScreen(page); diff --git a/ketcher-autotests/tests/Structure-Creating-&-Editing/Simple Objects/simple-objects-draw-line.spec.ts b/ketcher-autotests/tests/Structure-Creating-&-Editing/Simple Objects/simple-objects-draw-line.spec.ts index 330ec56f4a..d2fe1207b4 100644 --- a/ketcher-autotests/tests/Structure-Creating-&-Editing/Simple Objects/simple-objects-draw-line.spec.ts +++ b/ketcher-autotests/tests/Structure-Creating-&-Editing/Simple Objects/simple-objects-draw-line.spec.ts @@ -1,5 +1,5 @@ import { test } from '@playwright/test'; -import { openSimpleObjectsDropdown } from '@utils'; +import { openSimpleObjectsDropdown, waitForPageInit } from '@utils'; import { takeEditorScreenshot } from '@utils/canvas'; import { clickInTheMiddleOfTheScreen, @@ -10,7 +10,7 @@ import { test.describe('draw and highlight line', () => { // selecting 'Shape Line', drawing it on canvas, highlighting created line test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/Structure-Creating-&-Editing/Simple Objects/simple-objects-ui-verification.spec.ts b/ketcher-autotests/tests/Structure-Creating-&-Editing/Simple Objects/simple-objects-ui-verification.spec.ts index 6fda1e2b8a..05e32efa43 100644 --- a/ketcher-autotests/tests/Structure-Creating-&-Editing/Simple Objects/simple-objects-ui-verification.spec.ts +++ b/ketcher-autotests/tests/Structure-Creating-&-Editing/Simple Objects/simple-objects-ui-verification.spec.ts @@ -1,9 +1,9 @@ import { test, expect } from '@playwright/test'; -import { openSimpleObjectsDropdown } from '@utils'; +import { openSimpleObjectsDropdown, waitForPageInit } from '@utils'; test.describe('Verifying buttons on Simple Objects', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test('Shape Ellipse tooltip', async ({ page }) => { diff --git a/ketcher-autotests/tests/Structure-Creating-&-Editing/Text-Tool/utf-8-svg-png.spec.ts b/ketcher-autotests/tests/Structure-Creating-&-Editing/Text-Tool/utf-8-svg-png.spec.ts index 7d6471999b..d6314ef57a 100644 --- a/ketcher-autotests/tests/Structure-Creating-&-Editing/Text-Tool/utf-8-svg-png.spec.ts +++ b/ketcher-autotests/tests/Structure-Creating-&-Editing/Text-Tool/utf-8-svg-png.spec.ts @@ -6,13 +6,12 @@ import { openFileAndAddToCanvas, delay, DELAY_IN_SECONDS, - waitForIndigoToLoad, + waitForPageInit, } from '@utils'; test.describe('Open UTF-8 and save as SVG and PNG', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); - await waitForIndigoToLoad(page); + await waitForPageInit(page); }); test('Open UTF-8 file and save as SVG', async ({ page }) => { diff --git a/ketcher-autotests/tests/Templates/Functional-Groups/Functional-Group-Tools/functional-group-tools.spec.ts b/ketcher-autotests/tests/Templates/Functional-Groups/Functional-Group-Tools/functional-group-tools.spec.ts index 028af405cd..edbbd811f2 100644 --- a/ketcher-autotests/tests/Templates/Functional-Groups/Functional-Group-Tools/functional-group-tools.spec.ts +++ b/ketcher-autotests/tests/Templates/Functional-Groups/Functional-Group-Tools/functional-group-tools.spec.ts @@ -27,6 +27,7 @@ import { SelectTool, selectNestedTool, STRUCTURE_LIBRARY_BUTTON_NAME, + waitForPageInit, } from '@utils'; import { getAtomByIndex } from '@utils/canvas/atoms'; import { getRotationHandleCoordinates } from '@utils/clicks/selectButtonByTitle'; @@ -35,7 +36,7 @@ const X_DELTA = 300; test.describe('Templates - Functional Group Tools', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { @@ -250,7 +251,7 @@ test.describe('Templates - Functional Group Tools', () => { test.describe('Templates - Functional Group Tools2', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { @@ -541,7 +542,7 @@ test.describe('Templates - Functional Group Tools2', () => { test.describe('Templates - Functional Group Tools3', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test('Filtering Functional Groups', async ({ page }) => { diff --git a/ketcher-autotests/tests/Templates/Functional-Groups/click-and-drag-fg-on-canvas.spec.ts b/ketcher-autotests/tests/Templates/Functional-Groups/click-and-drag-fg-on-canvas.spec.ts index b9292dee3e..f3f699cefc 100644 --- a/ketcher-autotests/tests/Templates/Functional-Groups/click-and-drag-fg-on-canvas.spec.ts +++ b/ketcher-autotests/tests/Templates/Functional-Groups/click-and-drag-fg-on-canvas.spec.ts @@ -16,13 +16,14 @@ import { resetCurrentTool, drawFGAndDrag, STRUCTURE_LIBRARY_BUTTON_NAME, + waitForPageInit, } from '@utils'; const SHIFT = 50; test.describe('Click and drag FG on canvas', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/Templates/Functional-Groups/click-fg-on-canvas.spec.ts b/ketcher-autotests/tests/Templates/Functional-Groups/click-fg-on-canvas.spec.ts index 434059c52c..0da48702a4 100644 --- a/ketcher-autotests/tests/Templates/Functional-Groups/click-fg-on-canvas.spec.ts +++ b/ketcher-autotests/tests/Templates/Functional-Groups/click-fg-on-canvas.spec.ts @@ -14,11 +14,12 @@ import { resetCurrentTool, SaltsAndSolvents, selectTemplate, + waitForPageInit, } from '@utils'; test.describe('Click Functional Group on canvas', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/Templates/Functional-Groups/functional-groups.spec.ts b/ketcher-autotests/tests/Templates/Functional-Groups/functional-groups.spec.ts index ef028628e1..975d35e29b 100644 --- a/ketcher-autotests/tests/Templates/Functional-Groups/functional-groups.spec.ts +++ b/ketcher-autotests/tests/Templates/Functional-Groups/functional-groups.spec.ts @@ -29,7 +29,7 @@ import { pressTab, FILE_TEST_DATA, STRUCTURE_LIBRARY_BUTTON_NAME, - waitForIndigoToLoad, + waitForPageInit, } from '@utils'; import { getAtomByIndex } from '@utils/canvas/atoms'; import { TestIdSelectors } from '@utils/selectors/testIdSelectors'; @@ -76,8 +76,7 @@ async function changeStatusOfAbbreviation( test.describe('Functional Groups', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); - await waitForIndigoToLoad(page); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { @@ -205,7 +204,7 @@ test.describe('Functional Groups', () => { test.describe('Functional Groups', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/Templates/Functional-Groups/lookup-abbreviations.spec.ts b/ketcher-autotests/tests/Templates/Functional-Groups/lookup-abbreviations.spec.ts index 0bf758615d..d88ab52dba 100644 --- a/ketcher-autotests/tests/Templates/Functional-Groups/lookup-abbreviations.spec.ts +++ b/ketcher-autotests/tests/Templates/Functional-Groups/lookup-abbreviations.spec.ts @@ -4,11 +4,12 @@ import { clickInTheMiddleOfTheScreen, delay, takeEditorScreenshot, + waitForPageInit, } from '@utils'; test.describe('Lookup Abbreviations tests', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { 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 0c744e39a7..1869403caf 100644 --- a/ketcher-autotests/tests/Templates/S-Groups/s-groups.spec.ts +++ b/ketcher-autotests/tests/Templates/S-Groups/s-groups.spec.ts @@ -1,15 +1,14 @@ /* eslint-disable no-magic-numbers */ import { test } from '@playwright/test'; import { - waitForKetcherInit, takeEditorScreenshot, openFileAndAddToCanvas, + waitForPageInit, } from '@utils'; test.describe('S-Groups', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); - await waitForKetcherInit(page); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/Templates/Salts-and-Solvents/click-and-drag-salts-on-canvas.spec.ts b/ketcher-autotests/tests/Templates/Salts-and-Solvents/click-and-drag-salts-on-canvas.spec.ts index f562f81e16..5b7b7281b4 100644 --- a/ketcher-autotests/tests/Templates/Salts-and-Solvents/click-and-drag-salts-on-canvas.spec.ts +++ b/ketcher-autotests/tests/Templates/Salts-and-Solvents/click-and-drag-salts-on-canvas.spec.ts @@ -17,13 +17,14 @@ import { drawFGAndDrag, drawSaltAndDrag, STRUCTURE_LIBRARY_BUTTON_NAME, + waitForPageInit, } from '@utils'; const SHIFT = 50; test.describe('Click and drag Salts and Solvents on canvas', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/Templates/Salts-and-Solvents/click-salts-on-canvas.spec.ts b/ketcher-autotests/tests/Templates/Salts-and-Solvents/click-salts-on-canvas.spec.ts index d3d0648139..96b5b3f124 100644 --- a/ketcher-autotests/tests/Templates/Salts-and-Solvents/click-salts-on-canvas.spec.ts +++ b/ketcher-autotests/tests/Templates/Salts-and-Solvents/click-salts-on-canvas.spec.ts @@ -15,11 +15,12 @@ import { resetCurrentTool, SaltsAndSolvents, STRUCTURE_LIBRARY_BUTTON_NAME, + waitForPageInit, } from '@utils'; test.describe('Click Salts and Solvents on canvas', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/Templates/Template-Library/template-library.spec.ts b/ketcher-autotests/tests/Templates/Template-Library/template-library.spec.ts index bd78ce1eaa..efb8d2e76c 100644 --- a/ketcher-autotests/tests/Templates/Template-Library/template-library.spec.ts +++ b/ketcher-autotests/tests/Templates/Template-Library/template-library.spec.ts @@ -7,6 +7,7 @@ import { STRUCTURE_LIBRARY_BUTTON_NAME, takeEditorScreenshot, TopPanelButton, + waitForPageInit, } from '@utils'; async function setDisplayStereoFlagsSettingToOn(page: Page) { @@ -45,7 +46,7 @@ async function placePhenylalanineMustard(page: Page, x: number, y: number) { test.describe('Templates - Template Library', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/Templates/Template-Manipulations/Manipulations-rings.spec.ts b/ketcher-autotests/tests/Templates/Template-Manipulations/Manipulations-rings.spec.ts index 513c0791f7..63fb9ce77c 100644 --- a/ketcher-autotests/tests/Templates/Template-Manipulations/Manipulations-rings.spec.ts +++ b/ketcher-autotests/tests/Templates/Template-Manipulations/Manipulations-rings.spec.ts @@ -17,6 +17,7 @@ import { selectTopPanelButton, takeEditorScreenshot, TopPanelButton, + waitForPageInit, } from '@utils'; async function createToolTipScreenshot(type: RingButton, page: Page) { @@ -102,7 +103,7 @@ test.describe('Templates - Rings manipulations', () => { // EPMLSOPKET: connecting different rings to rings, applying changes to a single ring, history check test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/Templates/User-Templates/user-templates.spec.ts b/ketcher-autotests/tests/Templates/User-Templates/user-templates.spec.ts index d023f72149..be5d880cb2 100644 --- a/ketcher-autotests/tests/Templates/User-Templates/user-templates.spec.ts +++ b/ketcher-autotests/tests/Templates/User-Templates/user-templates.spec.ts @@ -16,7 +16,7 @@ import { getControlModifier, STRUCTURE_LIBRARY_BUTTON_NAME, waitForSpinnerFinishedWork, - waitForIndigoToLoad, + waitForPageInit, } from '@utils'; import { TestIdSelectors } from '@utils/selectors/testIdSelectors'; @@ -56,7 +56,7 @@ async function saveToTemplates(page: Page) { } test.describe('Click User Templates on canvas', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { @@ -254,8 +254,7 @@ test.describe('Click User Templates on canvas', () => { // These two tests affect other tests or by other tests, so they were moved to a separate describe group test.describe('Click User Templates on canvas', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); - await waitForIndigoToLoad(page); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/User-Interface/AbbreviationLookup/abbreviation-lookup.spec.ts b/ketcher-autotests/tests/User-Interface/AbbreviationLookup/abbreviation-lookup.spec.ts index a09031ff82..851fd0faea 100644 --- a/ketcher-autotests/tests/User-Interface/AbbreviationLookup/abbreviation-lookup.spec.ts +++ b/ketcher-autotests/tests/User-Interface/AbbreviationLookup/abbreviation-lookup.spec.ts @@ -1,12 +1,16 @@ import { test, expect } from '@playwright/test'; -import { clickInTheMiddleOfTheScreen, takeEditorScreenshot } from '@utils'; +import { + clickInTheMiddleOfTheScreen, + takeEditorScreenshot, + waitForPageInit, +} from '@utils'; /* Lookup Abbreviations window appears when user starts typing */ test.describe('Lookup Abbreviations window', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test('does not disappear when user switches to new browser tab', async ({ diff --git a/ketcher-autotests/tests/User-Interface/About/about-ui.spec.ts b/ketcher-autotests/tests/User-Interface/About/about-ui.spec.ts index 303b92fbc5..452666532c 100644 --- a/ketcher-autotests/tests/User-Interface/About/about-ui.spec.ts +++ b/ketcher-autotests/tests/User-Interface/About/about-ui.spec.ts @@ -4,11 +4,12 @@ import { takeEditorScreenshot, TopPanelButton, clickByLink, + waitForPageInit, } from '@utils'; test.describe('Open Ketcher', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test('About floating windows appeared', async ({ page }) => { diff --git a/ketcher-autotests/tests/User-Interface/Editing-Tools/3D-Viewer/three-d-viewer.spec.ts b/ketcher-autotests/tests/User-Interface/Editing-Tools/3D-Viewer/three-d-viewer.spec.ts index 9c16446b07..2ef87302d4 100644 --- a/ketcher-autotests/tests/User-Interface/Editing-Tools/3D-Viewer/three-d-viewer.spec.ts +++ b/ketcher-autotests/tests/User-Interface/Editing-Tools/3D-Viewer/three-d-viewer.spec.ts @@ -14,12 +14,13 @@ import { selectRing, RingButton, clickInTheMiddleOfTheScreen, + waitForPageInit, } from '@utils'; import { getKet } from '@utils/formats'; test.describe.fixme('3D Viewer', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { @@ -102,7 +103,7 @@ test.describe.fixme('3D Viewer', () => { test.describe.fixme('3D Viewer', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test('Button and tooltip verification', async ({ page }) => { diff --git a/ketcher-autotests/tests/User-Interface/Editing-Tools/Copy-Cut-Paste/copy-cut-paste.spec.ts b/ketcher-autotests/tests/User-Interface/Editing-Tools/Copy-Cut-Paste/copy-cut-paste.spec.ts index bd8c447c11..ee035f58dc 100644 --- a/ketcher-autotests/tests/User-Interface/Editing-Tools/Copy-Cut-Paste/copy-cut-paste.spec.ts +++ b/ketcher-autotests/tests/User-Interface/Editing-Tools/Copy-Cut-Paste/copy-cut-paste.spec.ts @@ -22,6 +22,7 @@ import { INPUT_DELAY, delay, DELAY_IN_SECONDS, + waitForPageInit, waitForIndigoToLoad, } from '@utils'; @@ -30,8 +31,7 @@ const CANVAS_CLICK_Y = 300; test.describe('Copy/Cut/Paste Actions', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); - await waitForIndigoToLoad(page); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { @@ -121,6 +121,7 @@ test.describe('Copy/Cut/Paste Actions', () => { Test case: EPMLSOPKET-1714 Description: After the clicking the Cut button, the selected object disappears. */ + // Error message appears const x = 300; const y = 300; await openFileAndAddToCanvas('reaction-dif-prop.rxn', page); @@ -134,6 +135,8 @@ test.describe('Copy/Cut/Paste Actions', () => { Test case: EPMLSOPKET-1714 Description: After the clicking the Cut button, the selected object disappears. */ + // Error Message + // Convert error! Given string could not be loaded as (query or plain) molecule or reaction const anyAtom = 1; const modifier = getControlModifier(); await openFileAndAddToCanvas('reaction-dif-prop.rxn', page); @@ -149,6 +152,8 @@ test.describe('Copy/Cut/Paste Actions', () => { Test case: EPMLSOPKET-1714 Description: After the clicking the Cut button, the selected object disappears. */ + // Error Message + // Convert error! Given string could not be loaded as (query or plain) molecule or reaction const anyBond = 1; const modifier = getControlModifier(); await openFileAndAddToCanvas('reaction-dif-prop.rxn', page); @@ -159,8 +164,7 @@ test.describe('Copy/Cut/Paste Actions', () => { await screenshotBetweenUndoRedo(page); }); - // flaky - test.fixme('Cut the reaction with hotkey', async ({ page }) => { + test('Cut the reaction with hotkey', async ({ page }) => { /* Test case: EPMLSOPKET-1714 Description: After the clicking the Cut button, the selected object disappears. @@ -202,8 +206,7 @@ test.describe('Copy/Cut/Paste Actions', () => { await selectTopPanelButton(TopPanelButton.Copy, page); }); - // flaky - test.fixme('Copy the reaction with hotkey', async ({ page }) => { + test('Copy the reaction with hotkey', async ({ page }) => { /* Test case: EPMLSOPKET-1715 Description: After the clicking the Copy button, the selected object not disappears. @@ -248,9 +251,9 @@ test.describe('Copy/Cut/Paste Actions', () => { test.fixme('Copy and paste the Atom from reaction', async ({ page }) => { /* Test case: EPMLSOPKET-1717 - Description: After the clicking the Copy button, the selected object not disappears. - After pasting two same structures located on canvas. + Description: Atom from reaction is copy and pasted. */ + // Can't copy and paste atom from reaction const x = 500; const y = 200; const anyAtom = 0; @@ -888,14 +891,14 @@ test.describe('Copy/Cut/Paste Actions', () => { test.describe('Copy/Cut/Paste Actions', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { await expect(page).toHaveScreenshot(); }); - test.fixme('Copy button', async ({ page }) => { + test('Copy button', async ({ page }) => { /* Test case: EPMLSOPKET-1709 Description: Button is disabled. Tooltip "Copy (Ctrl+ะก)" appears. @@ -906,7 +909,7 @@ test.describe('Copy/Cut/Paste Actions', () => { Object is created. Object is selected. Buttons are enabled. */ - // Need add mask to Indigo buttons. They do not have time to load and sometimes they do. + await waitForIndigoToLoad(page); await page.getByTestId('copy-button-dropdown-triangle').click(); await delay(DELAY_IN_SECONDS.THREE); await expect(page).toHaveScreenshot(); @@ -922,8 +925,7 @@ test.describe('Copy/Cut/Paste Actions', () => { Description: The 'Cut' button is disabled if nothing is selected on the canvas. The 'Cut (Ctrl+X)' cut the structure. */ - // wait for top panel buttons to show up - await delay(DELAY_IN_SECONDS.TWO); + await waitForIndigoToLoad(page); await expect(page).toHaveScreenshot(); await selectRing(RingButton.Benzene, page); await clickInTheMiddleOfTheScreen(page); @@ -941,8 +943,7 @@ test.describe('Copy/Cut/Paste Actions', () => { When user clicks on the 'Paste' button alert message appears. Message should have direction to use shortcuts. */ - // wait for top panel buttons to show up - await delay(DELAY_IN_SECONDS.TWO); + await waitForIndigoToLoad(page); await expect(page).toHaveScreenshot(); await selectRing(RingButton.Benzene, page); await clickInTheMiddleOfTheScreen(page); diff --git a/ketcher-autotests/tests/User-Interface/Editing-Tools/Copy-Cut-Paste/copy-cut-paste.spec.ts-snapshots/Copy-Cut-Paste-Actions-Copy-button-1-chromium-linux.png b/ketcher-autotests/tests/User-Interface/Editing-Tools/Copy-Cut-Paste/copy-cut-paste.spec.ts-snapshots/Copy-Cut-Paste-Actions-Copy-button-1-chromium-linux.png index f729fdcf14..aec5d2b4a8 100644 Binary files a/ketcher-autotests/tests/User-Interface/Editing-Tools/Copy-Cut-Paste/copy-cut-paste.spec.ts-snapshots/Copy-Cut-Paste-Actions-Copy-button-1-chromium-linux.png and b/ketcher-autotests/tests/User-Interface/Editing-Tools/Copy-Cut-Paste/copy-cut-paste.spec.ts-snapshots/Copy-Cut-Paste-Actions-Copy-button-1-chromium-linux.png differ diff --git a/ketcher-autotests/tests/User-Interface/Editing-Tools/Copy-Cut-Paste/copy-cut-paste.spec.ts-snapshots/Copy-Cut-Paste-Actions-Copy-button-2-chromium-linux.png b/ketcher-autotests/tests/User-Interface/Editing-Tools/Copy-Cut-Paste/copy-cut-paste.spec.ts-snapshots/Copy-Cut-Paste-Actions-Copy-button-2-chromium-linux.png index 573e1318fd..e0b36b780b 100644 Binary files a/ketcher-autotests/tests/User-Interface/Editing-Tools/Copy-Cut-Paste/copy-cut-paste.spec.ts-snapshots/Copy-Cut-Paste-Actions-Copy-button-2-chromium-linux.png and b/ketcher-autotests/tests/User-Interface/Editing-Tools/Copy-Cut-Paste/copy-cut-paste.spec.ts-snapshots/Copy-Cut-Paste-Actions-Copy-button-2-chromium-linux.png differ diff --git a/ketcher-autotests/tests/User-Interface/Editing-Tools/Copy-Cut-Paste/copy-cut-paste.spec.ts-snapshots/Copy-Cut-Paste-Actions-Cut-button-1-chromium-linux.png b/ketcher-autotests/tests/User-Interface/Editing-Tools/Copy-Cut-Paste/copy-cut-paste.spec.ts-snapshots/Copy-Cut-Paste-Actions-Cut-button-1-chromium-linux.png index 154974afb9..d04dd420e3 100644 Binary files a/ketcher-autotests/tests/User-Interface/Editing-Tools/Copy-Cut-Paste/copy-cut-paste.spec.ts-snapshots/Copy-Cut-Paste-Actions-Cut-button-1-chromium-linux.png and b/ketcher-autotests/tests/User-Interface/Editing-Tools/Copy-Cut-Paste/copy-cut-paste.spec.ts-snapshots/Copy-Cut-Paste-Actions-Cut-button-1-chromium-linux.png differ diff --git a/ketcher-autotests/tests/User-Interface/Editing-Tools/Copy-Cut-Paste/copy-cut-paste.spec.ts-snapshots/Copy-Cut-Paste-Actions-Cut-button-2-chromium-linux.png b/ketcher-autotests/tests/User-Interface/Editing-Tools/Copy-Cut-Paste/copy-cut-paste.spec.ts-snapshots/Copy-Cut-Paste-Actions-Cut-button-2-chromium-linux.png index c8c22e09ba..e29cdb0032 100644 Binary files a/ketcher-autotests/tests/User-Interface/Editing-Tools/Copy-Cut-Paste/copy-cut-paste.spec.ts-snapshots/Copy-Cut-Paste-Actions-Cut-button-2-chromium-linux.png and b/ketcher-autotests/tests/User-Interface/Editing-Tools/Copy-Cut-Paste/copy-cut-paste.spec.ts-snapshots/Copy-Cut-Paste-Actions-Cut-button-2-chromium-linux.png differ diff --git a/ketcher-autotests/tests/User-Interface/Editing-Tools/Copy-Cut-Paste/copy-cut-paste.spec.ts-snapshots/Copy-Cut-Paste-Actions-Paste-button-1-chromium-linux.png b/ketcher-autotests/tests/User-Interface/Editing-Tools/Copy-Cut-Paste/copy-cut-paste.spec.ts-snapshots/Copy-Cut-Paste-Actions-Paste-button-1-chromium-linux.png index 6e4577f467..d04dd420e3 100644 Binary files a/ketcher-autotests/tests/User-Interface/Editing-Tools/Copy-Cut-Paste/copy-cut-paste.spec.ts-snapshots/Copy-Cut-Paste-Actions-Paste-button-1-chromium-linux.png and b/ketcher-autotests/tests/User-Interface/Editing-Tools/Copy-Cut-Paste/copy-cut-paste.spec.ts-snapshots/Copy-Cut-Paste-Actions-Paste-button-1-chromium-linux.png differ diff --git a/ketcher-autotests/tests/User-Interface/Editing-Tools/Undo-Redo/undo-redo-actions.spec.ts b/ketcher-autotests/tests/User-Interface/Editing-Tools/Undo-Redo/undo-redo-actions.spec.ts index 174a3289ed..a1a000eb63 100644 --- a/ketcher-autotests/tests/User-Interface/Editing-Tools/Undo-Redo/undo-redo-actions.spec.ts +++ b/ketcher-autotests/tests/User-Interface/Editing-Tools/Undo-Redo/undo-redo-actions.spec.ts @@ -34,6 +34,7 @@ import { BondTool, DELAY_IN_SECONDS, delay, + waitForPageInit, } from '@utils'; import { getAtomByIndex } from '@utils/canvas/atoms'; @@ -108,7 +109,7 @@ async function fillAliasForAtom(page: Page, alias: string, button: string) { test.describe('Undo/Redo Actions', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { @@ -666,7 +667,7 @@ test.describe('Undo/Redo Actions', () => { test.describe('Undo/Redo Actions', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.fixme('Undo/Redo paste template action', async ({ page }) => { diff --git a/ketcher-autotests/tests/User-Interface/Outline-For-Hovered-Structures/outline-for-hovered-structures.spec.ts b/ketcher-autotests/tests/User-Interface/Outline-For-Hovered-Structures/outline-for-hovered-structures.spec.ts index f574017370..b51c951340 100644 --- a/ketcher-autotests/tests/User-Interface/Outline-For-Hovered-Structures/outline-for-hovered-structures.spec.ts +++ b/ketcher-autotests/tests/User-Interface/Outline-For-Hovered-Structures/outline-for-hovered-structures.spec.ts @@ -3,6 +3,7 @@ import { takeEditorScreenshot, openFileAndAddToCanvas, getCoordinatesOfTheMiddleOfTheScreen, + waitForPageInit, } from '@utils'; // shift of coordinates relative to the center, for the hover of the entire structure: @@ -10,7 +11,7 @@ const screenCenterShift = 50; test.describe('Outline for hovered structures', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/User-Interface/Preview-For-Abbreviated-Structures/preview-for-abbreviated-structures.spec.ts b/ketcher-autotests/tests/User-Interface/Preview-For-Abbreviated-Structures/preview-for-abbreviated-structures.spec.ts index 41a5a8b952..b2e882991d 100644 --- a/ketcher-autotests/tests/User-Interface/Preview-For-Abbreviated-Structures/preview-for-abbreviated-structures.spec.ts +++ b/ketcher-autotests/tests/User-Interface/Preview-For-Abbreviated-Structures/preview-for-abbreviated-structures.spec.ts @@ -11,6 +11,7 @@ import { moveMouseToTheMiddleOfTheScreen, BondType, DELAY_IN_SECONDS, + waitForPageInit, } from '@utils'; import { getRightAtomByAttributes } from '@utils/canvas/atoms'; import { getBondByIndex } from '@utils/canvas/bonds'; @@ -28,7 +29,7 @@ async function selectFunctionalGroup(page: Page) { */ test.describe('Preview for abbreviated structures: functional groups', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); // place a benzene ring in the middle of the screen await selectRingButton(RingButton.Benzene, page); await clickInTheMiddleOfTheScreen(page); diff --git a/ketcher-autotests/tests/User-Interface/Right-Click-Menu/right-click.spec.ts b/ketcher-autotests/tests/User-Interface/Right-Click-Menu/right-click.spec.ts index e79ad147f7..771f9423a4 100644 --- a/ketcher-autotests/tests/User-Interface/Right-Click-Menu/right-click.spec.ts +++ b/ketcher-autotests/tests/User-Interface/Right-Click-Menu/right-click.spec.ts @@ -13,13 +13,14 @@ import { selectLeftPanelButton, LeftPanelButton, clickInTheMiddleOfTheScreen, + waitForPageInit, } from '@utils'; import { getAtomByIndex } from '@utils/canvas/atoms'; import { getBondByIndex } from '@utils/canvas/bonds'; test.describe('Right-click menu', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { diff --git a/ketcher-autotests/tests/User-Interface/Save-Dialog/save-dialog.spec.ts b/ketcher-autotests/tests/User-Interface/Save-Dialog/save-dialog.spec.ts index 7339e96c0b..3d3b382b0e 100644 --- a/ketcher-autotests/tests/User-Interface/Save-Dialog/save-dialog.spec.ts +++ b/ketcher-autotests/tests/User-Interface/Save-Dialog/save-dialog.spec.ts @@ -3,11 +3,12 @@ import { clickInTheMiddleOfTheScreen, RingButton, selectRingButton, + waitForPageInit, } from '@utils'; test.describe('Save dialog dropdown', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test('should render opened file format dropdown when the closed dropdown is clicked', async ({ diff --git a/ketcher-autotests/tests/User-Interface/Select-Tools/select-bonds.spec.ts b/ketcher-autotests/tests/User-Interface/Select-Tools/select-bonds.spec.ts index 490764c0f1..7c31cbb652 100644 --- a/ketcher-autotests/tests/User-Interface/Select-Tools/select-bonds.spec.ts +++ b/ketcher-autotests/tests/User-Interface/Select-Tools/select-bonds.spec.ts @@ -6,13 +6,14 @@ import { selectLeftPanelButton, selectButtonById, BondTypeId, + waitForPageInit, } from '@utils'; import { getAtomByIndex } from '@utils/canvas/atoms'; import { getBondByIndex } from '@utils/canvas/bonds'; test.describe('Bonds plus atoms selection ', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { await takeEditorScreenshot(page); diff --git a/ketcher-autotests/tests/User-Interface/Select-Tools/select-tools.spec.ts b/ketcher-autotests/tests/User-Interface/Select-Tools/select-tools.spec.ts index a4f5696439..f850b73b0b 100644 --- a/ketcher-autotests/tests/User-Interface/Select-Tools/select-tools.spec.ts +++ b/ketcher-autotests/tests/User-Interface/Select-Tools/select-tools.spec.ts @@ -6,12 +6,13 @@ import { selectTool, LeftPanelButton, BondType, + waitForPageInit, } from '@utils'; import { getBondByIndex } from '@utils/canvas/bonds'; test.describe('Select tools tests', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test('when add molecula and choose select tools and move cursor to edge it should show specific pointer', async ({ diff --git a/ketcher-autotests/tests/User-Interface/Toolbar/toolbar-ui.spec.ts b/ketcher-autotests/tests/User-Interface/Toolbar/toolbar-ui.spec.ts index ce65e6a359..81baee27ee 100644 --- a/ketcher-autotests/tests/User-Interface/Toolbar/toolbar-ui.spec.ts +++ b/ketcher-autotests/tests/User-Interface/Toolbar/toolbar-ui.spec.ts @@ -13,13 +13,12 @@ import { resetCurrentTool, selectLeftPanelButton, LeftPanelButton, - waitForIndigoToLoad, + waitForPageInit, } from '@utils'; test.describe('Open Ketcher', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); - await waitForIndigoToLoad(page); + await waitForPageInit(page); }); test('Toolbar palette: full screen verification', async ({ page }) => { @@ -90,7 +89,7 @@ test.describe('Open Ketcher', () => { Description: Toolbars (right one and bottom) were not visible if browser zoomed in */ await browser.newContext({ deviceScaleFactor: 1.25 }); - await page.goto(''); + await waitForPageInit(page); await page.setViewportSize({ width: 560, height: 380 }); await expect(page).toHaveScreenshot(); }); diff --git a/ketcher-autotests/tests/User-Interface/Toolbar/toolbar-ui.spec.ts-snapshots/Open-Ketcher-Toolbars-on-the-right-and-bottom-visible-when-zoomed-in-1-chromium-linux.png b/ketcher-autotests/tests/User-Interface/Toolbar/toolbar-ui.spec.ts-snapshots/Open-Ketcher-Toolbars-on-the-right-and-bottom-visible-when-zoomed-in-1-chromium-linux.png index c7c59d2179..f05f9fba59 100644 Binary files a/ketcher-autotests/tests/User-Interface/Toolbar/toolbar-ui.spec.ts-snapshots/Open-Ketcher-Toolbars-on-the-right-and-bottom-visible-when-zoomed-in-1-chromium-linux.png and b/ketcher-autotests/tests/User-Interface/Toolbar/toolbar-ui.spec.ts-snapshots/Open-Ketcher-Toolbars-on-the-right-and-bottom-visible-when-zoomed-in-1-chromium-linux.png differ diff --git a/ketcher-autotests/tests/User-Interface/Zoom-Changes/zoom-changes.spec.ts b/ketcher-autotests/tests/User-Interface/Zoom-Changes/zoom-changes.spec.ts index a6c41f6531..2775e8ed7d 100644 --- a/ketcher-autotests/tests/User-Interface/Zoom-Changes/zoom-changes.spec.ts +++ b/ketcher-autotests/tests/User-Interface/Zoom-Changes/zoom-changes.spec.ts @@ -1,13 +1,14 @@ import { test, expect } from '@playwright/test'; import { TestIdSelectors } from '../../utils/selectors/testIdSelectors'; import { clickInTheMiddleOfTheScreen } from '@utils/clicks'; +import { waitForPageInit } from '@utils/common'; const randomNegativeNumber = -60; const randomPositiveNumber = 60; test.describe('Zoom changes', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); /* Editor is zoomed correctly: */ diff --git a/ketcher-autotests/tests/User-Interface/periodic-table.spec.ts b/ketcher-autotests/tests/User-Interface/periodic-table.spec.ts index a538f3f783..bbc38d27fc 100644 --- a/ketcher-autotests/tests/User-Interface/periodic-table.spec.ts +++ b/ketcher-autotests/tests/User-Interface/periodic-table.spec.ts @@ -4,11 +4,12 @@ import { AtomButton, selectAtomInToolbar, clickInTheMiddleOfTheScreen, + waitForPageInit, } from '@utils'; test.describe('Open Ketcher', () => { test.beforeEach(async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); }); test.afterEach(async ({ page }) => { await takeEditorScreenshot(page); diff --git a/ketcher-autotests/tests/test-data/Molfiles-V2000/attached-data-expected.mol b/ketcher-autotests/tests/test-data/Molfiles-V2000/attached-data-expected.mol index bee0e6abb6..d5b3ced4e3 100644 --- a/ketcher-autotests/tests/test-data/Molfiles-V2000/attached-data-expected.mol +++ b/ketcher-autotests/tests/test-data/Molfiles-V2000/attached-data-expected.mol @@ -1,5 +1,5 @@ - Ketcher 8212313162D 1 1.00000 0.00000 0 + Ketcher 9 72315262D 1 1.00000 0.00000 0 10 9 0 0 1 0 0 0 0 0999 V2000 12.0438 -8.0500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/ketcher-autotests/tests/test-data/Molfiles-V3000/atom-properties-V3000-expected.mol b/ketcher-autotests/tests/test-data/Molfiles-V3000/atom-properties-V3000-expected.mol index 1e414cc5ec..d8bc71da31 100644 --- a/ketcher-autotests/tests/test-data/Molfiles-V3000/atom-properties-V3000-expected.mol +++ b/ketcher-autotests/tests/test-data/Molfiles-V3000/atom-properties-V3000-expected.mol @@ -1,5 +1,5 @@ - -INDIGO-08212313162D + -INDIGO-09072315252D 0 0 0 0 0 0 0 0 0 0 0 V3000 M V30 BEGIN CTAB diff --git a/ketcher-autotests/tests/test-data/Molfiles-V3000/attached-data-V3000-expected.mol b/ketcher-autotests/tests/test-data/Molfiles-V3000/attached-data-V3000-expected.mol index 25b098b0a6..76cecdfa60 100644 --- a/ketcher-autotests/tests/test-data/Molfiles-V3000/attached-data-V3000-expected.mol +++ b/ketcher-autotests/tests/test-data/Molfiles-V3000/attached-data-V3000-expected.mol @@ -1,5 +1,5 @@ - -INDIGO-08212313162D + -INDIGO-09072315262D 0 0 0 0 0 0 0 0 0 0 0 V3000 M V30 BEGIN CTAB diff --git a/ketcher-autotests/tests/test-data/V2000-abs-expected.mol b/ketcher-autotests/tests/test-data/V2000-abs-expected.mol index f2d1c773e8..4feb604f2b 100644 --- a/ketcher-autotests/tests/test-data/V2000-abs-expected.mol +++ b/ketcher-autotests/tests/test-data/V2000-abs-expected.mol @@ -1,5 +1,5 @@ - Ketcher 8212313162D 1 1.00000 0.00000 0 + Ketcher 9 72315262D 1 1.00000 0.00000 0 43 47 0 0 1 0 0 0 0 0999 V2000 15.0439 -7.1683 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/ketcher-autotests/tests/test-data/V3000-abs-expected.mol b/ketcher-autotests/tests/test-data/V3000-abs-expected.mol index 93ce80343f..0f768fc7e0 100644 --- a/ketcher-autotests/tests/test-data/V3000-abs-expected.mol +++ b/ketcher-autotests/tests/test-data/V3000-abs-expected.mol @@ -1,5 +1,5 @@ - -INDIGO-08212313162D + -INDIGO-09072315262D 0 0 0 0 0 0 0 0 0 0 0 V3000 M V30 BEGIN CTAB diff --git a/ketcher-autotests/tests/test-data/heteroatoms-V3000-expected.mol b/ketcher-autotests/tests/test-data/heteroatoms-V3000-expected.mol index 0b36ed1aa3..b979bdf8ba 100644 --- a/ketcher-autotests/tests/test-data/heteroatoms-V3000-expected.mol +++ b/ketcher-autotests/tests/test-data/heteroatoms-V3000-expected.mol @@ -1,5 +1,5 @@ - -INDIGO-08212313162D + -INDIGO-09072315262D 0 0 0 0 0 0 0 0 0 0 0 V3000 M V30 BEGIN CTAB diff --git a/ketcher-autotests/tests/test-data/heteroatoms-expected.mol b/ketcher-autotests/tests/test-data/heteroatoms-expected.mol index 175675d353..601aa27647 100644 --- a/ketcher-autotests/tests/test-data/heteroatoms-expected.mol +++ b/ketcher-autotests/tests/test-data/heteroatoms-expected.mol @@ -1,5 +1,5 @@ - Ketcher 8212313162D 1 1.00000 0.00000 0 + Ketcher 9 72315252D 1 1.00000 0.00000 0 9 8 0 0 0 0 0 0 0 0999 V2000 11.6109 -8.5500 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/ketcher-autotests/tests/test-data/ketcher (4)-expected.mol b/ketcher-autotests/tests/test-data/ketcher (4)-expected.mol index bcc585f720..232d842499 100644 --- a/ketcher-autotests/tests/test-data/ketcher (4)-expected.mol +++ b/ketcher-autotests/tests/test-data/ketcher (4)-expected.mol @@ -1,5 +1,5 @@ - Ketcher 8212313162D 1 1.00000 0.00000 0 + Ketcher 9 72315272D 1 1.00000 0.00000 0 17 16 0 0 0 0 0 0 0 0999 V2000 9.8788 -9.2748 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/ketcher-autotests/tests/test-data/mol_1855_to_open-expected.mol b/ketcher-autotests/tests/test-data/mol_1855_to_open-expected.mol index de575b5868..53c500af2c 100644 --- a/ketcher-autotests/tests/test-data/mol_1855_to_open-expected.mol +++ b/ketcher-autotests/tests/test-data/mol_1855_to_open-expected.mol @@ -1,5 +1,5 @@ - Ketcher 8212313162D 1 1.00000 0.00000 0 + Ketcher 9 72315252D 1 1.00000 0.00000 0 27 26 0 0 0 0 0 0 0 0999 V2000 7.7138 -5.5500 0.0000 N 0 0 0 0 0 4 0 0 0 0 0 0 diff --git a/ketcher-autotests/tests/test-data/sec_butyl_abr-expected.mol b/ketcher-autotests/tests/test-data/sec_butyl_abr-expected.mol index 5088f63303..eacafd3beb 100644 --- a/ketcher-autotests/tests/test-data/sec_butyl_abr-expected.mol +++ b/ketcher-autotests/tests/test-data/sec_butyl_abr-expected.mol @@ -1,5 +1,5 @@ - Ketcher 8212313162D 1 1.00000 0.00000 0 + Ketcher 9 72315252D 1 1.00000 0.00000 0 10 9 0 0 0 0 0 0 0 0999 V2000 9.8788 -8.3000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/ketcher-autotests/tests/test-data/sec_butyl_abr_V3000-expected.mol b/ketcher-autotests/tests/test-data/sec_butyl_abr_V3000-expected.mol index fb783fc570..748e01fbf1 100644 --- a/ketcher-autotests/tests/test-data/sec_butyl_abr_V3000-expected.mol +++ b/ketcher-autotests/tests/test-data/sec_butyl_abr_V3000-expected.mol @@ -1,5 +1,5 @@ - -INDIGO-08212313162D + -INDIGO-09072315252D 0 0 0 0 0 0 0 0 0 0 0 V3000 M V30 BEGIN CTAB diff --git a/ketcher-autotests/tests/test-data/spiro-expected.mol b/ketcher-autotests/tests/test-data/spiro-expected.mol index b5d9ce488c..a254f3817e 100644 --- a/ketcher-autotests/tests/test-data/spiro-expected.mol +++ b/ketcher-autotests/tests/test-data/spiro-expected.mol @@ -1,5 +1,5 @@ - -INDIGO-08212313162D + -INDIGO-09072315262D 0 0 0 0 0 0 0 0 0 0 0 V3000 M V30 BEGIN CTAB diff --git a/ketcher-autotests/tests/utils/canvas/atoms/getAtomsCoordinatesByAttributes/getAtomsCoordinatesByAttributes.spec.ts b/ketcher-autotests/tests/utils/canvas/atoms/getAtomsCoordinatesByAttributes/getAtomsCoordinatesByAttributes.spec.ts index 720b87f84f..d41d5f9b07 100644 --- a/ketcher-autotests/tests/utils/canvas/atoms/getAtomsCoordinatesByAttributes/getAtomsCoordinatesByAttributes.spec.ts +++ b/ketcher-autotests/tests/utils/canvas/atoms/getAtomsCoordinatesByAttributes/getAtomsCoordinatesByAttributes.spec.ts @@ -1,5 +1,5 @@ import { expect, test } from '@playwright/test'; -import { drawElementByTitle } from '@utils'; +import { drawElementByTitle, waitForPageInit } from '@utils'; import { getAtomsCoordinatesByAttributes } from './getAtomsCoordinatesByAttributes'; import { SORT_TYPE, ELEMENT_TITLE } from '@utils/canvas/types'; import { @@ -23,7 +23,7 @@ test.skip(`should return only coordinates for benzene ring in ascending order`, y2: 300, }; - await page.goto(''); + await waitForPageInit(page); await drawElementByTitle(page, ELEMENT_TITLE.HYDROGEN, offset.x1, offset.y1); await drawElementByTitle(page, ELEMENT_TITLE.BENZENE, offset.x2, offset.y2); @@ -59,7 +59,7 @@ test.skip(`should throw error in case we draw atom below left/top toolbars`, asy }) => { const offsetX = -10; const offsetY = -10; - await page.goto(''); + await waitForPageInit(page); // draw atom below from left/top toolbar await drawElementByTitle(page, ELEMENT_TITLE.HYDROGEN, offsetX, offsetY); @@ -84,7 +84,7 @@ test.skip(`should throw error in case we pass incorrect attributes to find atoms valence: 532, }; - await page.goto(''); + await waitForPageInit(page); // draw atom below from left/top toolbar await drawElementByTitle(page, ELEMENT_TITLE.HYDROGEN, offsetX, offsetY); diff --git a/ketcher-autotests/tests/utils/canvas/atoms/getFirstAtomCoordinatesByAttributes/getFirstAtomCoordinatesByAttributes.spec.ts b/ketcher-autotests/tests/utils/canvas/atoms/getFirstAtomCoordinatesByAttributes/getFirstAtomCoordinatesByAttributes.spec.ts index 2dd896e5ef..89af198cce 100644 --- a/ketcher-autotests/tests/utils/canvas/atoms/getFirstAtomCoordinatesByAttributes/getFirstAtomCoordinatesByAttributes.spec.ts +++ b/ketcher-autotests/tests/utils/canvas/atoms/getFirstAtomCoordinatesByAttributes/getFirstAtomCoordinatesByAttributes.spec.ts @@ -3,6 +3,7 @@ import { drawElementByTitle, getLeftToolBarWidth, getTopToolBarHeight, + waitForPageInit, } from '@utils'; import { getFirstAtomCoordinatesByAttributes } from './getFirstAtomCoordinatesByAttributes'; import { @@ -25,7 +26,7 @@ test.skip(` const offsetAtomX = 0; const offsetAtomY = 0; - await page.goto(''); + await waitForPageInit(page); const leftBarWidth = await getLeftToolBarWidth(page); const topBarHeight = await getTopToolBarHeight(page); @@ -55,7 +56,7 @@ test.skip(` const offsetAtomX = 100; const offsetAtomY = 150; - await page.goto(''); + await waitForPageInit(page); const leftBarWidth = await getLeftToolBarWidth(page); const topBarHeight = await getTopToolBarHeight(page); @@ -83,7 +84,7 @@ test.skip(`should find first available atom for complex structures (with multipl const offsetAtomX = 100; const offsetAtomY = 150; - await page.goto(''); + await waitForPageInit(page); await drawElementByTitle( page, ELEMENT_TITLE.BENZENE, @@ -106,7 +107,7 @@ test.skip(`should find atom by custom attributes`, async ({ page }) => { const offsetAtomX = 100; const offsetAtomY = 150; - await page.goto(''); + await waitForPageInit(page); await drawElementByTitle( page, ELEMENT_TITLE.HYDROGEN, @@ -135,7 +136,7 @@ test.skip(`should throw an error STRUCTURE_NOT_FOUND_ERROR in case we pass empty const offsetAtomX = 100; const offsetAtomY = 150; - await page.goto(''); + await waitForPageInit(page); await drawElementByTitle( page, ELEMENT_TITLE.HYDROGEN, @@ -149,7 +150,7 @@ test.skip(`should throw an error STRUCTURE_NOT_FOUND_ERROR in case we pass empty }); test.skip(`should throw an error in case canvas IS EMPTY`, async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); await expect(async () => { await getFirstAtomCoordinatesByAttributes(page, { @@ -167,7 +168,7 @@ test.skip(`should throw an error when the position of the atom below / above top // setting incorrect position of the atom (below left/top toolbar) const offsetAtomX = -10; const offsetAtomY = -10; - await page.goto(''); + await waitForPageInit(page); await drawElementByTitle( page, @@ -196,7 +197,7 @@ test.skip(`should throw an error in case we pass incorrect attributes`, async ({ label: 'H', valence: 4, }; - await page.goto(''); + await waitForPageInit(page); await drawElementByTitle( page, diff --git a/ketcher-autotests/tests/utils/canvas/bonds/example.spec.ts b/ketcher-autotests/tests/utils/canvas/bonds/example.spec.ts index 8bb653f047..d3ba61804d 100644 --- a/ketcher-autotests/tests/utils/canvas/bonds/example.spec.ts +++ b/ketcher-autotests/tests/utils/canvas/bonds/example.spec.ts @@ -1,5 +1,5 @@ import { test } from '@playwright/test'; -import { drawElementByTitle } from '@utils'; +import { drawElementByTitle, waitForPageInit } from '@utils'; import { getRightBondByAttributes, getBottomBondByAttributes, @@ -21,7 +21,7 @@ const OFFSET_Y = 300; // ONLY FOR EXAMPLES, can be deleted later test.skip(`BOND`, async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); await drawElementByTitle(page, ELEMENT_TITLE.BENZENE, OFFSET_X, OFFSET_Y); const searchedIndex = 2; @@ -55,7 +55,7 @@ test.skip(`BOND`, async ({ page }) => { }); test.skip(`ATOM`, async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); await drawElementByTitle(page, ELEMENT_TITLE.BENZENE, OFFSET_X, OFFSET_Y); const firstAtom = await getAtomByIndex(page, { label: 'C', valence: 1 }, 0); diff --git a/ketcher-autotests/tests/utils/canvas/helpers.ts b/ketcher-autotests/tests/utils/canvas/helpers.ts index 7b62f10eb7..f7327ceb0a 100644 --- a/ketcher-autotests/tests/utils/canvas/helpers.ts +++ b/ketcher-autotests/tests/utils/canvas/helpers.ts @@ -6,7 +6,7 @@ import { } from '@playwright/test'; import { clickInTheMiddleOfTheScreen, pressButton } from '@utils/clicks'; import { ELEMENT_TITLE } from './types'; -import { DELAY_IN_SECONDS, TopPanelButton } from '..'; +import { DELAY_IN_SECONDS, TopPanelButton, waitForRender } from '..'; import { selectTopPanelButton } from './tools'; import { getLeftTopBarSize } from './common/getLeftTopBarSize'; @@ -81,7 +81,7 @@ export async function takeEditorScreenshot( options?: { masks?: Locator[] }, ) { const editor = page.getByTestId('ketcher-canvas').first(); - await delay(DELAY_IN_SECONDS.THREE); + await waitForRender(page); await expect(editor).toHaveScreenshot({ mask: options?.masks }); } diff --git a/ketcher-autotests/tests/utils/canvas/tools/selectNestedTool/example.spec.ts b/ketcher-autotests/tests/utils/canvas/tools/selectNestedTool/example.spec.ts index a2af7ed0a2..281f00d87f 100644 --- a/ketcher-autotests/tests/utils/canvas/tools/selectNestedTool/example.spec.ts +++ b/ketcher-autotests/tests/utils/canvas/tools/selectNestedTool/example.spec.ts @@ -9,39 +9,40 @@ import { RgroupTool, SelectTool, } from '@utils/canvas/tools/selectNestedTool'; +import { waitForPageInit } from '@utils/common'; // shows the usage of selectNestedTool for autotesters test.skip('use tripple bond tool', async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); await selectNestedTool(page, BondTool.TRIPPLE); }); test.skip('use shape rectangle tool', async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); await selectNestedTool(page, ShapeTool.SHAPE_RECTANGLE); }); test.skip('use selection tool', async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); await selectNestedTool(page, SelectTool.LASSO_SELECTION); }); test.skip('use vertical rotate tool', async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); await selectNestedTool(page, RotateTool.VERTICAL_FLIP); }); test.skip('use arrow tool', async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); await selectNestedTool(page, ArrowTool.ARROW_ELLIPTICAL_ARC_OPEN_ANGLE); }); test.skip('use reaction tool', async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); await selectNestedTool(page, ReactionMappingTool.MAP); }); test.skip('use rgroup tool', async ({ page }) => { - await page.goto(''); + await waitForPageInit(page); await selectNestedTool(page, RgroupTool.R_GROUP_FRAGMENT); }); diff --git a/ketcher-autotests/tests/utils/common/loaders/index.ts b/ketcher-autotests/tests/utils/common/loaders/index.ts index 60a20bb34b..235b70aa37 100644 --- a/ketcher-autotests/tests/utils/common/loaders/index.ts +++ b/ketcher-autotests/tests/utils/common/loaders/index.ts @@ -2,3 +2,5 @@ export { waitForLoad } from './waitForLoad/waitForLoad'; export { waitForKetcherInit } from './waitForKetcherInit/waitForKetcherInit'; export { waitForSpinnerFinishedWork } from './waitForSpinnerFinishedWork/waitForSpinnerFinishedWork'; export { waitForIndigoToLoad } from './waitForIndigoToLoad'; +export { waitForRender } from './waitForRender'; +export { waitForPageInit } from './waitForPageInit'; diff --git a/ketcher-autotests/tests/utils/common/loaders/waitForPageInit.ts b/ketcher-autotests/tests/utils/common/loaders/waitForPageInit.ts new file mode 100644 index 0000000000..28ac942b7d --- /dev/null +++ b/ketcher-autotests/tests/utils/common/loaders/waitForPageInit.ts @@ -0,0 +1,9 @@ +import { Page } from '@playwright/test'; +import { waitForKetcherInit } from './waitForKetcherInit/waitForKetcherInit'; +import { waitForIndigoToLoad } from './waitForIndigoToLoad'; + +export const waitForPageInit = async (page: Page) => { + await page.goto(''); + await waitForKetcherInit(page); + await waitForIndigoToLoad(page); +}; diff --git a/ketcher-autotests/tests/utils/common/loaders/waitForRender.ts b/ketcher-autotests/tests/utils/common/loaders/waitForRender.ts new file mode 100644 index 0000000000..15ffdc357b --- /dev/null +++ b/ketcher-autotests/tests/utils/common/loaders/waitForRender.ts @@ -0,0 +1,40 @@ +import { Page } from '@playwright/test'; + +type AnyFunction = (...args: any) => Promise; +// eslint-disable-next-line @typescript-eslint/no-empty-function +const emptyFunction: AnyFunction = async () => {}; + +export const waitForRender = async ( + page: Page, + callback = emptyFunction, + timeout = 3000, +) => { + await Promise.all([ + waitForCustomEvent(page, 'renderComplete', timeout), + callback(), + ]); +}; + +async function waitForCustomEvent( + page: Page, + eventName: string, + timeout?: number, +) { + return page.evaluate( + async ({ eventName, timeout }: { eventName: string; timeout?: number }) => { + return new Promise((resolve) => { + window.addEventListener( + eventName, + () => { + resolve(true); + }, + { once: true }, + ); + if (timeout) { + setTimeout(() => resolve(true), timeout); + } + }); + }, + { eventName, timeout }, + ); +} diff --git a/packages/ketcher-core/src/application/render/raphaelRender.ts b/packages/ketcher-core/src/application/render/raphaelRender.ts index e3c1173dfe..4711a78347 100644 --- a/packages/ketcher-core/src/application/render/raphaelRender.ts +++ b/packages/ketcher-core/src/application/render/raphaelRender.ts @@ -23,6 +23,12 @@ import { Scale } from 'domain/helpers'; import defaultOptions from './options'; import draw from './draw'; import { RenderOptions } from './render.types'; +import _ from 'lodash'; + +const notifyRenderComplete = _.debounce(() => { + const event = new Event('renderComplete'); + window.dispatchEvent(event); +}, 500); export class Render { public skipRaphaelInitialization = false; @@ -266,6 +272,8 @@ export class Render { ); /* eslint-enable no-mixed-operators */ } + + notifyRenderComplete(); } } }