From 75566bad398cfbeaa9a8e8efafc14a6a77f80ef2 Mon Sep 17 00:00:00 2001 From: Jake McDermott Date: Mon, 12 Nov 2018 00:26:30 -0500 Subject: [PATCH] fix workflow e2e tests --- .../e2e/tests/test-templates-list-actions.js | 104 +++++++++++------- .../e2e/tests/test-workflow-visualizer.js | 43 ++++++-- 2 files changed, 93 insertions(+), 54 deletions(-) diff --git a/awx/ui/test/e2e/tests/test-templates-list-actions.js b/awx/ui/test/e2e/tests/test-templates-list-actions.js index fbebe75d94..617c3f590d 100644 --- a/awx/ui/test/e2e/tests/test-templates-list-actions.js +++ b/awx/ui/test/e2e/tests/test-templates-list-actions.js @@ -140,56 +140,76 @@ module.exports = { templates.expect.element('@save').enabled; client.pause(1000); - templates.section.editWorkflowJobTemplate - .waitForElementVisible('@visualizerButton') - .click('@visualizerButton') - .waitForElementVisible('div.spinny') - .waitForElementNotVisible('div.spinny') - .waitForAngular(); + client.getValue('#workflow_job_template_name', result => { + templates.expect.element('#workflow_job_template_cancel_btn').visible; + templates.click('#workflow_job_template_cancel_btn'); + client.refresh(); + client.waitForElementVisible('div.spinny'); + client.waitForElementNotVisible('div.spinny'); - client.expect.element('#workflow-modal-dialog').visible; - client.expect.element('#workflow-modal-dialog span[class^="badge"]').visible; - client.expect.element('#workflow-modal-dialog span[class^="badge"]').text.equal('3'); - client.expect.element('div[class="WorkflowMaker-title"]').visible; - client.expect.element('div[class="WorkflowMaker-title"]').text.contain(data.workflow.name); - client.expect.element('div[class="WorkflowMaker-title"]').text.not.equal(data.workflow.name); + templates.expect.element('smart-search').visible; + templates.expect.element('smart-search input').enabled; - client.expect.element('#workflow-modal-dialog i[class*="fa-cog"]').visible; - client.expect.element('#workflow-modal-dialog i[class*="fa-cog"]').enabled; + templates + .sendKeys('smart-search input', `name.iexact:"${result.value}"`) + .sendKeys('smart-search input', client.Keys.ENTER); - client.click('#workflow-modal-dialog i[class*="fa-cog"]'); + templates.waitForElementVisible('div.spinny'); + templates.waitForElementNotVisible('div.spinny'); - client.waitForElementVisible('workflow-controls'); - client.waitForElementVisible('div[class*="-zoomPercentage"]'); + templates.expect.element('.at-Panel-headingTitleBadge').text.equal('1').before(10000); + templates.expect.element('div[ui-view="templatesList"] i[class*="sitemap"]').visible; + templates.expect.element('div[ui-view="templatesList"] i[class*="sitemap"]').enabled; - client.click('i[class*="fa-home"]').expect.element('div[class*="-zoomPercentage"]').text.equal('100%'); - client.click('i[class*="fa-minus"]').expect.element('div[class*="-zoomPercentage"]').text.equal('90%'); - client.click('i[class*="fa-minus"]').expect.element('div[class*="-zoomPercentage"]').text.equal('80%'); - client.click('i[class*="fa-minus"]').expect.element('div[class*="-zoomPercentage"]').text.equal('70%'); - client.click('i[class*="fa-minus"]').expect.element('div[class*="-zoomPercentage"]').text.equal('60%'); + client + .click('div[ui-view="templatesList"] i[class*="sitemap"]') + .pause(1500) + .waitForElementNotVisible('div.spinny'); - client.expect.element('#node-1').visible; - client.expect.element('#node-2').visible; - client.expect.element('#node-3').visible; - client.expect.element('#node-4').visible; + client.expect.element('#workflow-modal-dialog').visible; + client.expect.element('#workflow-modal-dialog span[class^="badge"]').visible; + client.expect.element('#workflow-modal-dialog span[class^="badge"]').text.equal('3'); + client.expect.element('div[class="WorkflowMaker-title"]').visible; + client.expect.element('div[class="WorkflowMaker-title"]').text.contain(data.workflow.name); + client.expect.element('div[class="WorkflowMaker-title"]').text.not.equal(data.workflow.name); - client.expect.element('#node-1 text').text.not.equal('').after(5000); - client.expect.element('#node-2 text').text.not.equal('').after(5000); - client.expect.element('#node-3 text').text.not.equal('').after(5000); - client.expect.element('#node-4 text').text.not.equal('').after(5000); + client.expect.element('#workflow-modal-dialog i[class*="fa-cog"]').visible; + client.expect.element('#workflow-modal-dialog i[class*="fa-cog"]').enabled; - const checkNodeText = (selector, text) => client.getText(selector, ({ value }) => { - client.assert.equal(text.indexOf(value.replace('...', '')) >= 0, true); + client.click('#workflow-modal-dialog i[class*="fa-cog"]'); + + client.waitForElementVisible('workflow-controls'); + client.waitForElementVisible('div[class*="-zoomPercentage"]'); + + client.click('i[class*="fa-home"]').expect.element('div[class*="-zoomPercentage"]').text.equal('100%'); + client.click('i[class*="fa-minus"]').expect.element('div[class*="-zoomPercentage"]').text.equal('90%'); + client.click('i[class*="fa-minus"]').expect.element('div[class*="-zoomPercentage"]').text.equal('80%'); + client.click('i[class*="fa-minus"]').expect.element('div[class*="-zoomPercentage"]').text.equal('70%'); + client.click('i[class*="fa-minus"]').expect.element('div[class*="-zoomPercentage"]').text.equal('60%'); + + client.expect.element('#node-1').visible; + client.expect.element('#node-2').visible; + client.expect.element('#node-3').visible; + client.expect.element('#node-4').visible; + + client.expect.element('#node-1 text').text.not.equal('').after(5000); + client.expect.element('#node-2 text').text.not.equal('').after(5000); + client.expect.element('#node-3 text').text.not.equal('').after(5000); + client.expect.element('#node-4 text').text.not.equal('').after(5000); + + const checkNodeText = (selector, text) => client.getText(selector, ({ value }) => { + client.assert.equal(text.indexOf(value.replace('...', '')) >= 0, true); + }); + + checkNodeText('#node-1 text', 'START'); + checkNodeText('#node-2 text', data.project.name); + checkNodeText('#node-3 text', data.template.name); + checkNodeText('#node-4 text', data.source.name); + + templates.expect.element('@save').visible; + templates.expect.element('@save').enabled; + + client.end(); }); - - checkNodeText('#node-1 text', 'START'); - checkNodeText('#node-2 text', data.project.name); - checkNodeText('#node-3 text', data.template.name); - checkNodeText('#node-4 text', data.source.name); - - templates.expect.element('@save').visible; - templates.expect.element('@save').enabled; - - client.end(); } }; diff --git a/awx/ui/test/e2e/tests/test-workflow-visualizer.js b/awx/ui/test/e2e/tests/test-workflow-visualizer.js index 7cccd3aec3..8e65e7069f 100644 --- a/awx/ui/test/e2e/tests/test-workflow-visualizer.js +++ b/awx/ui/test/e2e/tests/test-workflow-visualizer.js @@ -53,20 +53,39 @@ module.exports = { data = { source, template, project, workflow }; done(); }); + }, + 'navigate to the workflow template visualizer': client => { + const templates = client.page.templates(); + + client.useCss(); + client.resizeWindow(1200, 800); + client.login(); + client.waitForAngular(); + + templates.load(); + templates.waitForElementVisible('div.spinny'); + templates.waitForElementNotVisible('div.spinny'); + + templates.expect.element('smart-search').visible; + templates.expect.element('smart-search input').enabled; + + templates + .sendKeys('smart-search input', `id:>${data.workflow.id - 1} id:<${data.workflow.id + 1}`) + .sendKeys('smart-search input', client.Keys.ENTER); + + templates.waitForElementVisible('div.spinny'); + templates.waitForElementNotVisible('div.spinny'); + + templates.expect.element('.at-Panel-headingTitleBadge').text.equal('1').before(10000); + templates.expect.element(`#row-${data.workflow.id}`).visible; + templates.expect.element('div[ui-view="templatesList"] i[class*="sitemap"]').visible; + templates.expect.element('div[ui-view="templatesList"] i[class*="sitemap"]').enabled; + client - .login() - .waitForAngular() - .resizeWindow(1200, 1000) - .useXpath() - .findThenClick(workflowTemplateNavTab) + .click('div[ui-view="templatesList"] i[class*="sitemap"]') .pause(1500) - .waitForElementNotVisible(spinny) - .clearValue(workflowSearchBar) - .setValue(workflowSearchBar, [workflowText, client.Keys.ENTER]) - .waitForElementVisible(workflowSearchBadgeCount) - .waitForElementNotVisible(spinny) - .findThenClick(workflowSelector) - .findThenClick(workflowVisualizerBtn); + .useXpath() + .waitForElementNotVisible(spinny); }, 'verify that workflow visualizer root node can only be set to always': client => { client