diff --git a/cypress/e2e/add-forge-now-request-create.cy.js b/cypress/e2e/add-forge-now-request-create.cy.js --- a/cypress/e2e/add-forge-now-request-create.cy.js +++ b/cypress/e2e/add-forge-now-request-create.cy.js @@ -7,7 +7,9 @@ function populateForm(type, url, contact, email, consent, comment) { cy.get('#swh-input-forge-type').select(type); - cy.get('#swh-input-forge-url').clear().type(url); + if (url) { + cy.get('#swh-input-forge-url').clear().type(url); + } cy.get('#swh-input-forge-contact-name').clear().type(contact); cy.get('#swh-input-forge-contact-email').clear().type(email); if (comment) { @@ -16,10 +18,28 @@ cy.get('#swh-input-consent-check').click({force: consent === 'on'}); } +function submitForm() { + cy.get('#requestCreateForm input[type=submit]').click(); + cy.get('#requestCreateForm').then($form => { + if ($form[0].checkValidity()) { + cy.wait('@addForgeRequestCreate'); + } + }); +} + +function initTest(testEnv) { + testEnv.addForgeNowUrl = testEnv.Urls.forge_add_create(); + testEnv.addForgeNowRequestCreateUrl = testEnv.Urls.api_1_add_forge_request_create(); + testEnv.listAddForgeRequestsUrl = testEnv.Urls.add_forge_request_list_datatables(); + cy.intercept('POST', testEnv.addForgeNowRequestCreateUrl + '**') + .as('addForgeRequestCreate'); + cy.intercept(testEnv.listAddForgeRequestsUrl + '**') + .as('addForgeRequestsList'); +} + describe('Browse requests list tests', function() { beforeEach(function() { - this.addForgeNowUrl = this.Urls.forge_add_create(); - this.listAddForgeRequestsUrl = this.Urls.add_forge_request_list_datatables(); + initTest(this); }); it('should not show user requests filter checkbox for anonymous users', function() { @@ -44,7 +64,7 @@ // create requests for the user 'user' populateForm('gitlab', 'https://gitlab.org', 'admin', 'admin@example.org', 'on', ''); - cy.get('#requestCreateForm').submit(); + submitForm(); // user requests filter checkbox should be in the DOM cy.get('#swh-add-forge-requests-list-tab').click(); @@ -63,12 +83,9 @@ cy.visit(this.addForgeNowUrl); populateForm('gitea', 'https://gitea.org', 'admin', 'admin@example.org', 'on', ''); - cy.get('#requestCreateForm').submit(); + submitForm(); populateForm('cgit', 'https://cgit.org', 'admin', 'admin@example.org', 'on', ''); - cy.get('#requestCreateForm').submit(); - - cy.intercept(this.Urls.add_forge_request_list_datatables() + '**') - .as('addForgeRequestsList'); + submitForm(); // user requests filter checkbox should be in the DOM cy.get('#swh-add-forge-requests-list-tab').click(); @@ -95,7 +112,7 @@ describe('Test add-forge-request creation', function() { beforeEach(function() { - this.addForgeNowUrl = this.Urls.forge_add_create(); + initTest(this); }); it('should show all the tabs for every user', function() { @@ -216,10 +233,13 @@ cy.userLogin(); cy.visit(this.addForgeNowUrl); populateForm('bitbucket', 'https://gitlab.com', 'test', 'test@example.com', 'on', 'test comment'); - cy.get('#requestCreateForm').submit(); + submitForm(); cy.visit(this.addForgeNowUrl); cy.get('#swh-add-forge-requests-list-tab').click(); + + cy.wait('@addForgeRequestsList'); + cy.get('#add-forge-request-browse') .should('be.visible') .should('contain', 'gitlab.com'); @@ -233,9 +253,9 @@ cy.userLogin(); cy.visit(this.addForgeNowUrl); populateForm('bitbucket', 'https://gitlab.com', 'test', 'test@example.com', 'on', 'test comment'); - cy.get('#requestCreateForm').submit(); + submitForm(); - cy.get('#requestCreateForm').submit(); // Submitting the same data again + submitForm(); // Submitting the same data again cy.get('#userMessage') .should('have.class', 'badge-danger') @@ -245,34 +265,24 @@ it('should show error message', function() { cy.userLogin(); - cy.intercept('POST', `${this.Urls.api_1_add_forge_request_create()}**`, - { - body: { - 'exception': 'BadInputExc', - 'reason': '{"add-forge-comment": ["This field is required"]}' - }, - statusCode: 400 - }).as('errorRequest'); - cy.visit(this.addForgeNowUrl); populateForm( - 'bitbucket', 'https://gitlab.com', 'test', 'test@example.com', 'off', 'comment' + 'bitbucket', '', 'test', 'test@example.com', 'off', 'comment' + ); + submitForm(); + + cy.get('#requestCreateForm').then( + $form => expect($form[0].checkValidity()).to.be.false ); - cy.get('#requestCreateForm').submit(); - cy.wait('@errorRequest').then((xhr) => { - cy.get('#userMessage') - .should('have.class', 'badge-danger') - .should('contain', 'field is required'); - }); }); - it('should bot validate form when forge URL is invalid', function() { + it('should not validate form when forge URL is invalid', function() { cy.userLogin(); cy.visit(this.addForgeNowUrl); populateForm('bitbucket', 'bitbucket.org', 'test', 'test@example.com', 'on', 'test comment'); - cy.get('#requestCreateForm').submit(); + submitForm(); cy.get('#swh-input-forge-url') .then(input => { diff --git a/cypress/e2e/add-forge-now-request-dashboard.cy.js b/cypress/e2e/add-forge-now-request-dashboard.cy.js --- a/cypress/e2e/add-forge-now-request-dashboard.cy.js +++ b/cypress/e2e/add-forge-now-request-dashboard.cy.js @@ -192,7 +192,7 @@ function populateAndSubmitForm() { cy.get('#decisionOptions').select('WAITING_FOR_FEEDBACK'); cy.get('#updateComment').type('This is an update comment'); - cy.get('#updateRequestForm').submit(); + cy.get('#updateRequestForm button[type=submit]').click(); } describe('Test add forge now request update', function() { @@ -301,7 +301,7 @@ {forceNetworkError: true}) .as('updateFailedRequest'); cy.get('#updateComment').type('This is an update comment'); - cy.get('#updateRequestForm').submit(); + cy.get('#updateRequestForm button[type=submit]').click(); cy.wait('@updateFailedRequest'); cy.get('#userMessage') diff --git a/cypress/e2e/add-forge-now-requests-moderation.cy.js b/cypress/e2e/add-forge-now-requests-moderation.cy.js --- a/cypress/e2e/add-forge-now-requests-moderation.cy.js +++ b/cypress/e2e/add-forge-now-requests-moderation.cy.js @@ -21,8 +21,8 @@ .type('admin') .get('input[name="password"]') .type('admin') - .get('.container form') - .submit(); + .get('.container form button[type=submit]') + .click(); cy.location('pathname') .should('be.equal', this.addForgeModerationUrl); diff --git a/cypress/e2e/admin.cy.js b/cypress/e2e/admin.cy.js --- a/cypress/e2e/admin.cy.js +++ b/cypress/e2e/admin.cy.js @@ -23,8 +23,8 @@ .type('admin') .get('input[name="password"]') .type('admin') - .get('.container form') - .submit(); + .get('.container form button[type=submit]') + .click(); cy.location('pathname') .should('be.equal', this.Urls.swh_web_homepage()); diff --git a/cypress/e2e/layout.cy.js b/cypress/e2e/layout.cy.js --- a/cypress/e2e/layout.cy.js +++ b/cypress/e2e/layout.cy.js @@ -191,8 +191,8 @@ cy.get('#swh-origins-search-top-input') .type(keyword); - cy.get('.swh-search-navbar') - .submit(); + cy.get('#swh-origins-search-top button[type=submit]') + .click({force: true}); cy.url() .should('include', `${this.Urls.browse_search()}?q=${keyword}`); diff --git a/cypress/e2e/origin-save.cy.js b/cypress/e2e/origin-save.cy.js --- a/cypress/e2e/origin-save.cy.js +++ b/cypress/e2e/origin-save.cy.js @@ -30,8 +30,8 @@ .type(originUrl) .get('#swh-input-visit-type') .select(originType) - .get('#swh-save-origin-form') - .submit(); + .get('#swh-save-origin-form button[type=submit]') + .click(); } function checkAlertVisible(alertType, msg) { @@ -618,8 +618,8 @@ .get('#swh-input-artifact-version-0') .clear() .type(artifactVersion) - .get('#swh-save-origin-form') - .submit(); + .get('#swh-save-origin-form button[type=submit]') + .click(); cy.wait('@saveRequest').then(() => { checkAlertVisible('success', saveCodeMsg['success']); @@ -696,8 +696,8 @@ }).as('saveRequest'); // submit form - cy.get('#swh-save-origin-form') - .submit(); + cy.get('#swh-save-origin-form button[type=submit]') + .click(); // submission should be successful cy.wait('@saveRequest').then(() => { @@ -776,8 +776,8 @@ .type(originUrl); // submit form - cy.get('#swh-save-origin-form') - .submit(); + cy.get('#swh-save-origin-form button[type=submit]') + .click(); // submission should be successful cy.wait('@ghWebApiRequest')