From acca61f2cadec34647ac9d94ad991759fad25850 Mon Sep 17 00:00:00 2001 From: Kailash Nadh Date: Sun, 6 Aug 2023 21:25:19 +0530 Subject: [PATCH] Fix race conditions in Cypress tests (sigh). --- frontend/cypress/e2e/campaigns.cy.js | 30 +++++++++++++++------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/frontend/cypress/e2e/campaigns.cy.js b/frontend/cypress/e2e/campaigns.cy.js index 671f82d..ac664c5 100644 --- a/frontend/cypress/e2e/campaigns.cy.js +++ b/frontend/cypress/e2e/campaigns.cy.js @@ -27,8 +27,9 @@ describe('Campaigns', () => { cy.get('a[data-cy=btn-attach]').click(); cy.get('input[type=file]').attachFile('example.json'); - cy.get('.modal button.is-primary').click(); - cy.get('.modal .thumb a.link').click(); + cy.get('.modal button.is-primary:eq(0)').click(); + cy.wait(500); + cy.get('.modal td[data-label=Name] a.link').click(); cy.get('button[data-cy=btn-save]').click(); cy.wait(500); @@ -40,7 +41,7 @@ describe('Campaigns', () => { // Start. cy.get('button[data-cy=btn-start]').click(); - cy.get('.modal button.is-primary').click(); + cy.get('.modal button.is-primary:eq(0)').click(); cy.wait(500); cy.get('tbody tr').eq(0).get('td[data-label=Status] .tag.running'); }); @@ -81,7 +82,7 @@ describe('Campaigns', () => { // Switch format to plain text. cy.get('label[data-cy=check-plain]').click(); - cy.get('.modal button.is-primary').click(); + cy.get('.modal button.is-primary:eq(0)').click(); // Enter body value. cy.get('textarea[name=content]').clear().type('new-content'); @@ -89,7 +90,7 @@ describe('Campaigns', () => { // Schedule. cy.get('button[data-cy=btn-schedule]').click(); - cy.get('.modal button.is-primary').click(); + cy.get('.modal button.is-primary:eq(0)').click(); cy.wait(250); @@ -141,11 +142,11 @@ describe('Campaigns', () => { // Switch format. cy.get(`label[data-cy=check-${c}]`).click(); - cy.get('.modal button.is-primary').click(); + cy.get('.modal button.is-primary:eq(0)').click(); // Check content. cy.get('button[data-cy=btn-preview]').click(); - cy.wait(200); + cy.wait(500); cy.get("#iframe").then(($f) => { if (c === 'plain') { return; @@ -164,7 +165,7 @@ describe('Campaigns', () => { // Clone the campaign. cy.get('[data-cy=btn-clone]').first().click(); cy.get('.modal input').clear().type(`clone${n}`).click(); - cy.get('.modal button.is-primary').click(); + cy.get('.modal button.is-primary:eq(0)').click(); cy.wait(250); cy.clickMenu('all-campaigns'); cy.wait(100); @@ -187,7 +188,7 @@ describe('Campaigns', () => { // Delete all visible lists. cy.get('tbody tr').each(() => { cy.get('tbody a[data-cy=btn-delete]').first().click(); - cy.get('.modal button.is-primary').click(); + cy.get('.modal button.is-primary:eq(0)').click(); }); // Confirm deletion. @@ -253,12 +254,13 @@ describe('Campaigns', () => { const plainBody = `hello${n} Demo Subscriber from Bengaluru`; const markdownBody = `**hello${n}** Demo Subscriber from Bengaluru`; + cy.log(`format = ${c}`) if (c === 'richtext') { cy.window().then((win) => { win.tinymce.editors[0].setContent(htmlBody); win.tinymce.editors[0].save(); }); - cy.wait(200); + cy.wait(500); } else if (c === 'html') { cy.get('code-flask').shadow().find('.codeflask textarea').invoke('val', htmlBody).trigger('input'); } else if (c === 'markdown') { @@ -272,7 +274,7 @@ describe('Campaigns', () => { // Preview and match the body. cy.get('button[data-cy=btn-preview]').click(); - cy.wait(200); + cy.wait(1000); cy.get("#iframe").then(($f) => { if (c === 'plain') { return; @@ -284,7 +286,7 @@ describe('Campaigns', () => { cy.get('.modal-card-foot button').click(); cy.clickMenu('all-campaigns'); - cy.wait(250); + cy.wait(500); // Verify the newly created campaign in the table. cy.get('tbody td[data-label="Name"]').first().contains(`name${n}`); @@ -316,13 +318,13 @@ describe('Campaigns', () => { it('Starts and cancels campaigns', () => { for (let n = 1; n <= 2; n++) { cy.get(`tbody tr:nth-child(${n}) [data-cy=btn-start]`).click(); - cy.get('.modal button.is-primary').click(); + cy.get('.modal button.is-primary:eq(0)').click(); cy.wait(250); cy.get(`tbody tr:nth-child(${n}) td[data-label=Status] .tag.running`); if (n > 1) { cy.get(`tbody tr:nth-child(${n}) [data-cy=btn-cancel]`).click(); - cy.get('.modal button.is-primary').click(); + cy.get('.modal button.is-primary:eq(0)').click(); cy.wait(250); cy.get(`tbody tr:nth-child(${n}) td[data-label=Status] .tag.cancelled`); }