From 92baea2ee6233664d447cee25110fca16adf3ea0 Mon Sep 17 00:00:00 2001 From: Daniel Sami Date: Fri, 19 Oct 2018 09:43:13 -0400 Subject: [PATCH 1/3] fix to search for exact search matches --- awx/ui/test/e2e/tests/test-workflow-visualizer.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/awx/ui/test/e2e/tests/test-workflow-visualizer.js b/awx/ui/test/e2e/tests/test-workflow-visualizer.js index 4b0b502348..5270d5a3af 100644 --- a/awx/ui/test/e2e/tests/test-workflow-visualizer.js +++ b/awx/ui/test/e2e/tests/test-workflow-visualizer.js @@ -10,6 +10,8 @@ const spinny = "//*[contains(@class, 'spinny')]"; const workflowTemplateNavTab = "//at-side-nav-item[contains(@name, 'TEMPLATES')]"; const workflowSelector = "//a[contains(text(), 'test-actions-workflow-template')]"; const workflowVisualizerBtn = "//button[contains(@id, 'workflow_job_template_workflow_visualizer_btn')]"; +const workflowSearchBar = "//input[contains(@class, 'SmartSearch-input')]"; +const workflowText = 'name.iexact:"test-actions-workflow-template"' const rootNode = "//*[@id='node-2']"; const childNode = "//*[@id='node-3']"; @@ -21,8 +23,8 @@ const nodeRemove = "//*[contains(@class, 'nodeRemoveCross')]"; // one of the jobs or projects or inventories const testActionsProject = "//td[contains(text(), 'test-actions-project')]"; const testActionsJob = "//td[contains(text(), 'test-actions-job')]"; -const testActionsProjectText = 'test-actions-project'; -const testActionsJobText = 'test-actions-job'; +const testActionsProjectText = 'name.iexact:"test-actions-project"'; +const testActionsJobText = 'name.iexact:"test-actions-job-template"'; // search bar for visualizer templates const jobSearchBar = "//*[contains(@id, 'workflow-jobs-list')]//input[contains(@class, 'SmartSearch-input')]"; @@ -58,6 +60,9 @@ module.exports = { .findThenClick(workflowTemplateNavTab) .pause(1500) .waitForElementNotVisible(spinny) + .clearValue(workflowSearchBar) + .setValue(workflowSearchBar, [workflowText, client.Keys.ENTER]) + .pause(1000) .findThenClick(workflowSelector) .findThenClick(workflowVisualizerBtn); }, From 427b8bdabb9a18fb80ff2bffa8a80ecc9ace7951 Mon Sep 17 00:00:00 2001 From: Daniel Sami Date: Fri, 19 Oct 2018 10:01:50 -0400 Subject: [PATCH 2/3] lint fix --- awx/ui/test/e2e/tests/test-workflow-visualizer.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/awx/ui/test/e2e/tests/test-workflow-visualizer.js b/awx/ui/test/e2e/tests/test-workflow-visualizer.js index 5270d5a3af..0ae272ddf9 100644 --- a/awx/ui/test/e2e/tests/test-workflow-visualizer.js +++ b/awx/ui/test/e2e/tests/test-workflow-visualizer.js @@ -11,7 +11,7 @@ const workflowTemplateNavTab = "//at-side-nav-item[contains(@name, 'TEMPLATES')] const workflowSelector = "//a[contains(text(), 'test-actions-workflow-template')]"; const workflowVisualizerBtn = "//button[contains(@id, 'workflow_job_template_workflow_visualizer_btn')]"; const workflowSearchBar = "//input[contains(@class, 'SmartSearch-input')]"; -const workflowText = 'name.iexact:"test-actions-workflow-template"' +const workflowText = 'name.iexact:"test-actions-workflow-template"'; const rootNode = "//*[@id='node-2']"; const childNode = "//*[@id='node-3']"; @@ -62,7 +62,6 @@ module.exports = { .waitForElementNotVisible(spinny) .clearValue(workflowSearchBar) .setValue(workflowSearchBar, [workflowText, client.Keys.ENTER]) - .pause(1000) .findThenClick(workflowSelector) .findThenClick(workflowVisualizerBtn); }, From c5ce62e11dd33261d7acd5e86b1e202688dc248d Mon Sep 17 00:00:00 2001 From: Daniel Sami Date: Fri, 19 Oct 2018 10:23:50 -0400 Subject: [PATCH 3/3] added functionality to validate that search is complete before continuing --- awx/ui/test/e2e/tests/test-workflow-visualizer.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/awx/ui/test/e2e/tests/test-workflow-visualizer.js b/awx/ui/test/e2e/tests/test-workflow-visualizer.js index 0ae272ddf9..7cccd3aec3 100644 --- a/awx/ui/test/e2e/tests/test-workflow-visualizer.js +++ b/awx/ui/test/e2e/tests/test-workflow-visualizer.js @@ -12,6 +12,7 @@ const workflowSelector = "//a[contains(text(), 'test-actions-workflow-template') const workflowVisualizerBtn = "//button[contains(@id, 'workflow_job_template_workflow_visualizer_btn')]"; const workflowSearchBar = "//input[contains(@class, 'SmartSearch-input')]"; const workflowText = 'name.iexact:"test-actions-workflow-template"'; +const workflowSearchBadgeCount = '//span[contains(@class, "at-Panel-headingTitleBadge") and contains(text(), "1")]'; const rootNode = "//*[@id='node-2']"; const childNode = "//*[@id='node-3']"; @@ -62,6 +63,8 @@ module.exports = { .waitForElementNotVisible(spinny) .clearValue(workflowSearchBar) .setValue(workflowSearchBar, [workflowText, client.Keys.ENTER]) + .waitForElementVisible(workflowSearchBadgeCount) + .waitForElementNotVisible(spinny) .findThenClick(workflowSelector) .findThenClick(workflowVisualizerBtn); },