From 01c19f9128b5110c5b9b6c5b4de0a4e2ed8fa119 Mon Sep 17 00:00:00 2001
From: Ema Suarasan <beatrice.suarasan@endava.com>
Date: Fri, 9 Apr 2021 16:48:26 +0300
Subject: [PATCH] test: add page load assertions

---
 .../elife/form_builer_page_spec.js            |  4 +-
 .../elife/manuscripts_page_spec.js            | 48 +++++++++----------
 .../integration/ncrc/manuscripts_page_spec.js |  4 +-
 cypress/page-object/manuscripts-page.js       |  6 +++
 cypress/page-object/submission-form-page.js   |  4 ++
 5 files changed, 38 insertions(+), 28 deletions(-)

diff --git a/cypress/integration/elife/form_builer_page_spec.js b/cypress/integration/elife/form_builer_page_spec.js
index 01954de09f..9e6920f455 100644
--- a/cypress/integration/elife/form_builer_page_spec.js
+++ b/cypress/integration/elife/form_builer_page_spec.js
@@ -15,6 +15,7 @@ describe('Form builder page tests', () => {
       cy.fixture('role_names').then(name => {
         cy.login(name.role.admin, formBuilder)
       })
+      FormsPage.verifyPageLoaded()
     })
 
     it('check title and elements from form builder', () => {
@@ -78,8 +79,9 @@ describe('Form builder page tests', () => {
       cy.fixture('role_names').then(name => {
         cy.login(name.role.admin, manuscripts)
       })
+      ManuscriptsPage.getTableHeader().should('be.visible')
       ManuscriptsPage.clickSubmit()
-      NewSubmissionPage.clickSubmitURL()
+      NewSubmissionPage.clickSubmitUrlAndVerifyLink()
     })
 
     // check if the form contain all the columns
diff --git a/cypress/integration/elife/manuscripts_page_spec.js b/cypress/integration/elife/manuscripts_page_spec.js
index a1fa7eda6d..c7f277eac3 100644
--- a/cypress/integration/elife/manuscripts_page_spec.js
+++ b/cypress/integration/elife/manuscripts_page_spec.js
@@ -15,6 +15,7 @@ describe('Manuscripts page tests', () => {
       cy.fixture('role_names').then(name => {
         cy.login(name.role.admin, manuscripts)
       })
+      ManuscriptsPage.getTableHeader().should('be.visible')
     })
 
     it('check Submit button is visible', () => {
@@ -22,13 +23,13 @@ describe('Manuscripts page tests', () => {
     })
     it('evaluation button is visible on unsubmited status article', () => {
       ManuscriptsPage.clickSubmit()
-      NewSubmissionPage.clickSubmitURL()
+      NewSubmissionPage.clickSubmitUrlAndVerifyLink()
       // fill the submit form and submit it
       // eslint-disable-next-line jest/valid-expect-in-promise
       cy.fixture('submission_form_data').then(data => {
         SubmissionFormPage.fillInArticleld(data.articleId)
       })
-      Menu.clickManuscripts()
+      Menu.clickManuscriptsAndAssertPageLoad()
       ManuscriptsPage.getEvaluationButton().should('be.visible')
     })
   })
@@ -43,28 +44,26 @@ describe('Manuscripts page tests', () => {
       cy.fixture('role_names').then(name => {
         cy.login(name.role.admin, manuscripts)
       })
+      ManuscriptsPage.getTableHeader().should('be.visible')
       ManuscriptsPage.clickSubmit()
-      NewSubmissionPage.clickSubmitURL()
+      NewSubmissionPage.clickSubmitUrlAndVerifyLink()
       // fill the submit form and submit it
       // eslint-disable-next-line jest/valid-expect-in-promise
       cy.fixture('submission_form_data').then(data => {
         SubmissionFormPage.fillInArticleld(data.articleId)
       })
-      Menu.clickManuscripts()
+      Menu.clickManuscriptsAndAssertPageLoad()
     })
 
-    it('unsubmited article is evaluated', () => {
+    it('unsubmitted article is evaluated', () => {
       ManuscriptsPage.clickEvaluation()
       cy.url().should('contain', 'evaluation')
 
-      // SubmissionFormPage.getArticleld().should('have.value', '')
       SubmissionFormPage.getArticleUrl().should('have.value', '')
-      // eslint-disable-next-line
       SubmissionFormPage.getDescription().should('have.value', '')
       SubmissionFormPage.getEvaluationContent()
         .find('p')
         .should('have.value', '')
-      // eslint-disable-next-line
       SubmissionFormPage.getFormOptionValue(-1).should('have.value', '')
       // eslint-disable-next-line jest/valid-expect-in-promise
       cy.fixture('submission_form_data').then(data => {
@@ -75,24 +74,24 @@ describe('Manuscripts page tests', () => {
         SubmissionFormPage.clickElementFromFormOptionList(4)
         SubmissionFormPage.selectDropdownOption(1)
         SubmissionFormPage.clickSubmitResearch()
-        SubmissionFormPage.clickSubmitManuscript()
+        SubmissionFormPage.clickSubmitManuscriptAndWaitPageLoad()
       })
       ManuscriptsPage.getStatus(0).should('eq', 'evaluated')
     })
 
     it('sort article after Article id', () => {
       ManuscriptsPage.clickSubmit()
-      NewSubmissionPage.clickSubmitURL()
+      NewSubmissionPage.clickSubmitUrlAndVerifyLink()
       SubmissionFormPage.fillInArticleld('456')
-      Menu.clickManuscripts()
+      Menu.clickManuscriptsAndAssertPageLoad()
       ManuscriptsPage.clickSubmit()
-      NewSubmissionPage.clickSubmitURL()
+      NewSubmissionPage.clickSubmitUrlAndVerifyLink()
       SubmissionFormPage.fillInArticleld('abc')
-      Menu.clickManuscripts()
+      Menu.clickManuscriptsAndAssertPageLoad()
       ManuscriptsPage.clickSubmit()
-      NewSubmissionPage.clickSubmitURL()
+      NewSubmissionPage.clickSubmitUrlAndVerifyLink()
       SubmissionFormPage.fillInArticleld('def')
-      Menu.clickManuscripts()
+      Menu.clickManuscriptsAndAssertPageLoad()
       ManuscriptsPage.getArticleTitleByRow(0).should('contain', 'def')
       ManuscriptsPage.getArticleTitleByRow(1).should('contain', 'abc')
       ManuscriptsPage.getArticleTitleByRow(2).should('contain', '456')
@@ -105,7 +104,7 @@ describe('Manuscripts page tests', () => {
     })
   })
 
-  context('Submited and evaluated article tests', () => {
+  context('Submitted and evaluated article tests', () => {
     beforeEach(() => {
       // task to restore the database as per the  dumps/initialState.sql
       cy.task('restore', 'initialState')
@@ -115,10 +114,11 @@ describe('Manuscripts page tests', () => {
       cy.fixture('role_names').then(name => {
         cy.login(name.role.admin, manuscripts)
 
+        ManuscriptsPage.getTableHeader().should('be.visible')
         ManuscriptsPage.getEvaluationButton().should('not.exist')
         ManuscriptsPage.clickSubmit()
 
-        NewSubmissionPage.clickSubmitURL()
+        NewSubmissionPage.clickSubmitUrlAndVerifyLink()
 
         // fill the submit form and submit it
         // eslint-disable-next-line jest/valid-expect-in-promise
@@ -131,9 +131,8 @@ describe('Manuscripts page tests', () => {
           SubmissionFormPage.selectDropdownOption(1)
           SubmissionFormPage.fillInCreator(name.role.admin)
           // eslint-disable-next-line
-          cy.wait(2000)
           SubmissionFormPage.clickSubmitResearch()
-          SubmissionFormPage.clickSubmitManuscript()
+          SubmissionFormPage.clickSubmitManuscriptAndWaitPageLoad()
         })
       })
     })
@@ -146,16 +145,16 @@ describe('Manuscripts page tests', () => {
     })
     it('evaluate article and check status is changed', () => {
       ManuscriptsPage.getStatus(0).should('eq', 'Submitted')
-      ManuscriptsPage.clickEvaluation(0)
+      ManuscriptsPage.clickEvaluation()
 
-      SubmissionFormPage.clickSubmitResearch()
+      SubmissionFormPage.clickSubmitResearchAndWaitPageLoad()
 
       ManuscriptsPage.getStatus(0).should('eq', 'evaluated')
       ManuscriptsPage.getEvaluationButton().should('be.visible')
     })
     it('submission details should be visible', () => {
       ManuscriptsPage.getStatus(0).should('eq', 'Submitted')
-      ManuscriptsPage.clickEvaluation(0)
+      ManuscriptsPage.clickEvaluation()
       // eslint-disable-next-line jest/valid-expect-in-promise
       cy.fixture('submission_form_data').then(data => {
         SubmissionFormPage.getArticleld().should('have.value', data.articleId)
@@ -183,7 +182,7 @@ describe('Manuscripts page tests', () => {
           ManuscriptsPage.getAuthor(0).should('eq', name.role.admin)
           ManuscriptsPage.getStatus(0).should('eq', 'Submitted')
         })
-        ManuscriptsPage.clickEvaluation(0)
+        ManuscriptsPage.clickEvaluation()
         SubmissionFormPage.fillInArticleld('123 - Evaluated')
         SubmissionFormPage.fillInArticleUrl('new url')
         SubmissionFormPage.fillInDescription('new description')
@@ -192,8 +191,7 @@ describe('Manuscripts page tests', () => {
         SubmissionFormPage.selectDropdownOption(-1)
         SubmissionFormPage.fillInCreator('creator')
         // eslint-disable-next-line
-        cy.wait(2000)
-        SubmissionFormPage.clickSubmitResearch()
+        SubmissionFormPage.clickSubmitResearchAndWaitPageLoad()
         ManuscriptsPage.clickEvaluation()
         // eslint-disable-next-line
         SubmissionFormPage.getArticleld().should(
diff --git a/cypress/integration/ncrc/manuscripts_page_spec.js b/cypress/integration/ncrc/manuscripts_page_spec.js
index a5eb54f9d8..0e537ea686 100644
--- a/cypress/integration/ncrc/manuscripts_page_spec.js
+++ b/cypress/integration/ncrc/manuscripts_page_spec.js
@@ -148,7 +148,7 @@ describe('manuscripts page tests', () => {
     })
     it('evaluate article and check status is changed', () => {
       ManuscriptsPage.getStatus(0).should('eq', 'Submitted')
-      ManuscriptsPage.clickEvaluation(0)
+      ManuscriptsPage.clickEvaluation()
 
       SubmissionFormPage.clickSubmitManuscriptAndWaitPageLoad()
 
@@ -158,7 +158,7 @@ describe('manuscripts page tests', () => {
       // eslint-disable-next-line jest/valid-expect-in-promise
       cy.fixture('submission_form_data').then(data => {
         ManuscriptsPage.getStatus(0).should('eq', 'Submitted')
-        ManuscriptsPage.clickEvaluation(0)
+        ManuscriptsPage.clickEvaluation()
         SubmissionFormPage.fillInValueAdded('Evaluated')
         SubmissionFormPage.clickTopicsCheckboxWithText('vaccines')
         // eslint-disable-next-line
diff --git a/cypress/page-object/manuscripts-page.js b/cypress/page-object/manuscripts-page.js
index 01696914b4..4844234241 100644
--- a/cypress/page-object/manuscripts-page.js
+++ b/cypress/page-object/manuscripts-page.js
@@ -1,4 +1,6 @@
 /// <reference types="Cypress" />
+import { evaluate } from '../support/routes'
+
 /**
  * Page component representing the fourth option in the left side menu,
  * where users can see the list of submitted manuscripts & select Control,
@@ -45,6 +47,10 @@ export const ManuscriptsPage = {
   clickEvaluation() {
     this.getEvaluationButton().click()
   },
+  clickEvaluationAndVerifyUrl() {
+    this.clickEvaluation()
+    cy.url({ timeout: 10000 }).should('contain', evaluate)
+  },
   getControlButton() {
     return cy.get(CONTROL_BUTTON)
   },
diff --git a/cypress/page-object/submission-form-page.js b/cypress/page-object/submission-form-page.js
index 005dd4d453..0c2408ab7c 100644
--- a/cypress/page-object/submission-form-page.js
+++ b/cypress/page-object/submission-form-page.js
@@ -213,6 +213,10 @@ export const SubmissionFormPage = {
   clickSubmitResearch() {
     this.getSubmitResearchButton().click()
   },
+  clickSubmitResearchAndWaitPageLoad() {
+    this.clickSubmitResearch()
+    ManuscriptsPage.getTableHeader().should('be.visible')
+  },
   getSubmitManuscriptButton() {
     return cy.get(SUBMIT_MANUSCRIPT_BUTTON)
   },
-- 
GitLab