From 693f14505b014dc7e6b54121ec4cc55b7cc62ffb Mon Sep 17 00:00:00 2001
From: Ilank <63646693+ilan7empest@users.noreply.github.com>
Date: Wed, 23 Oct 2024 10:59:59 +0300
Subject: [PATCH 01/26] Impl [Tests] QA Sprint 171 done (#2847)
---
package.json | 2 +-
tests/features/MLFunction.feature | 27 +-
tests/features/common-tools/common-consts.js | 3 +
tests/features/common/actions/table.action.js | 15 +-
.../page-objects/interactive-popup.po.js | 17 +-
.../common/page-objects/jobs-monitoring.po.js | 38 +-
.../common/page-objects/ml-functions.po.js | 1 +
.../page-objects/project-settings.po.js | 9 +
.../common/page-objects/projects.po.js | 18 +
tests/features/datasets.feature | 1 +
tests/features/jobsAndWorkflows.feature | 4 +
tests/features/jobsMonitoring.feature | 419 ++++++++++++++++--
tests/features/models.feature | 1 +
tests/features/projectMonitoring.feature | 8 +-
tests/features/projectSettings.feature | 45 +-
tests/features/projectsPage.feature | 14 +-
.../features/step-definitions/table.steps.js | 14 +-
tests/mockServer/data/funcs.json | 92 +++-
tests/mockServer/data/run.json | 47 +-
tests/mockServer/data/runs.json | 47 +-
tests/mockServer/dateSynchronization.js | 2 +-
tests/mockServer/mock.js | 55 ++-
22 files changed, 799 insertions(+), 80 deletions(-)
diff --git a/package.json b/package.json
index fffced7c7..b2d4eb6f4 100644
--- a/package.json
+++ b/package.json
@@ -128,7 +128,7 @@
"body-parser": "^1.19.0",
"case-sensitive-paths-webpack-plugin": "^2.4.0",
"chai": "^4.3.4",
- "chromedriver": "^128.0.0",
+ "chromedriver": "^130.0.0",
"css-loader": "^6.5.1",
"cucumber-html-reporter": "^5.3.0",
"eslint": "^8.57.0",
diff --git a/tests/features/MLFunction.feature b/tests/features/MLFunction.feature
index a7a2c1e4f..f87e862a6 100644
--- a/tests/features/MLFunction.feature
+++ b/tests/features/MLFunction.feature
@@ -699,7 +699,7 @@ Feature: ML Functions
When collapse "Resources_Accordion" on "New_Function" wizard
Then "Deploy_Button" element on "New_Function" should contains "Create" value
Then click on "Deploy_Button" element on "New_Function" wizard
- Then click on "Cross_Close_Button" element on "ML_Function_Info_Pane" wizard
+ And wait load page
Then check "new-aqa-function-01" value in "name" column in "Functions_Table" table on "ML_Functions" wizard
@MLF
@@ -1321,6 +1321,8 @@ Feature: ML Functions
When click on cell with row index 1 in "name" column in "Functions_Table" table on "ML_Functions" wizard
And wait load page
Then verify redirection from "projects/default/functions/INVALID/latest/overview" to "projects/default/functions"
+ And wait load page
+ And wait load page
Then verify "Notification_Pop_Up" element visibility on "Notification_Popup" wizard
And wait load page
Then "Notification_Pop_Up" element on "Notification_Popup" should contains "This function either does not exist or was deleted" value
@@ -1334,16 +1336,16 @@ Feature: ML Functions
Then verify "Date_Picker_Filter_Dropdown" element visibility on "ML_Functions" wizard
When select "Any time" option in "Date_Picker_Filter_Dropdown" filter dropdown on "ML_Functions" wizard
And wait load page
- When click on cell with row index 1 in "name" column in "Functions_Table" table on "ML_Functions" wizard
+ When click on cell with row index 2 in "name" column in "Functions_Table" table on "ML_Functions" wizard
And wait load page
- Then verify redirection from "projects/default/functions/85957751e571a92e07213781f5e0c35bfbe42c64/INVALID" to "projects/default/functions/85957751e571a92e07213781f5e0c35bfbe42c64/overview"
+ Then verify redirection from "projects/default/functions/model-monitoring-stream/latest/INVALID" to "projects/default/functions/model-monitoring-stream/latest/overview"
Then select "Code" tab in "Info_Pane_Tab_Selector" on "ML_Function_Info_Pane" wizard
And wait load page
- Then verify redirection from "projects/default/functions/85957751e571a92e07213781f5e0c35bfbe42c64/INVALID" to "projects/default/functions/85957751e571a92e07213781f5e0c35bfbe42c64/overview"
+ Then verify redirection from "projects/default/functions/model-monitoring-stream/latest/INVALID" to "projects/default/functions/model-monitoring-stream/latest/overview"
Then select "Build Log" tab in "Info_Pane_Tab_Selector" on "ML_Function_Info_Pane" wizard
And wait load page
- Then verify redirection from "projects/default/functions/85957751e571a92e07213781f5e0c35bfbe42c64/INVALID" to "projects/default/functions/85957751e571a92e07213781f5e0c35bfbe42c64/overview"
- Then verify redirection from "projects/default/INVALID/85957751e571a92e07213781f5e0c35bfbe42c64/overview" to "projects"
+ Then verify redirection from "projects/default/functions/model-monitoring-stream/latest/INVALID" to "projects/default/functions/model-monitoring-stream/latest/overview"
+ Then verify redirection from "projects/default/INVALID/model-monitoring-stream/latest/overview" to "projects"
@MLF
@smoke
@@ -1412,8 +1414,19 @@ Feature: ML Functions
Then verify "New_Function_Build_Commands_Text_Area" not input element in "Code_Accordion" on "New_Function" wizard is enabled
Then click on "Save_Button" element on "New_Function" wizard
And wait load page
- Then "Header" element on "ML_Function_Info_Pane" should contains "demo-function-02" value
+ Then check "demo-function-02" value in "name" column in "Functions_Table" table on "ML_Functions" wizard
+ Then verify "Table_FilterBy_Button" element visibility on "ML_Functions" wizard
+ Then click on "Table_FilterBy_Button" element on "ML_Functions" wizard
+ Then "Title" element on "FilterBy_Popup" should contains "Filter by" value
+ Then verify "Show_Untagged" element visibility on "FilterBy_Popup" wizard
+ Then check "Show_Untagged" element on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
+ And wait load page
+ Then check "demo-function-02" value in "name" column in "Functions_Table" table on "ML_Functions" wizard
+ When click on cell with value "demo-function-02" in "name" column in "Functions_Table" table on "ML_Functions" wizard
Then check "demo-function-02" value in "name" column in "Overview_Table" table on "ML_Function_Info_Pane" wizard
+ Then "Header" element on "ML_Function_Info_Pane" should contains "demo-function-02" value
@MLF
@passive
diff --git a/tests/features/common-tools/common-consts.js b/tests/features/common-tools/common-consts.js
index 76167584a..cb2920e34 100644
--- a/tests/features/common-tools/common-consts.js
+++ b/tests/features/common-tools/common-consts.js
@@ -495,6 +495,7 @@ module.exports = {
'Run on spot:',
'Node selector:',
'Priority:',
+ 'Handler:',
'Parameters:',
'Function:',
'Function tag:',
@@ -598,6 +599,8 @@ module.exports = {
},
No_Data_Message: {
Common_Message_Jobs_Monitoring: /No data matches the filter: "Start time: \d{2}\/\d{2}\/\d{4} \d{2}:\d{2} - \d{2}\/\d{2}\/\d{4} \d{2}:\d{2}, Project: test"/,
+ Common_Message_Jobs_Monitoring_Status: /No data matches the filter: "Created at: \d{2}\/\d{2}\/\d{4} \d{2}:\d{2} - \d{2}\/\d{2}\/\d{4} \d{2}:\d{2}, Status: (.+?)"/,
+ Common_Message_Jobs_Monitoring_Type: /No data matches the filter: "Start time: \d{2}\/\d{2}\/\d{4} \d{2}:\d{2} - \d{2}\/\d{2}\/\d{4} \d{2}:\d{2}, Type: (.+?)"/,
Common_Message_Jobs_Monitoring_Scheduled: /No data matches the filter: "Scheduled at: \d{2}\/\d{2}\/\d{4} \d{2}:\d{2} - \d{2}\/\d{2}\/\d{4} \d{2}:\d{2}, Project: test"/,
Common_Message: 'No data matches the filter: "Version Tag: latest, Name: ccccc"',
Common_Message_Feature: 'No data matches the filter: "Version Tag: latest"',
diff --git a/tests/features/common/actions/table.action.js b/tests/features/common/actions/table.action.js
index a2d714693..e4097aaea 100644
--- a/tests/features/common/actions/table.action.js
+++ b/tests/features/common/actions/table.action.js
@@ -81,7 +81,7 @@ const action = {
`Value "${subString}" does not includes in all values: [${arr}]`
)
},
- isContainsSubstringInColumnAttributrCells: async function(
+ isContainsSubstringInColumnAttributeCells: async function(
driver,
table,
columnName,
@@ -94,6 +94,19 @@ const action = {
`Value "${value}" does not includes in all values: [${arr}]`
)
},
+ isContainsSubstringInColumnAttributeListCells: async function(
+ driver,
+ table,
+ columnName,
+ value
+ ) {
+ const arr = await getColumnValuesAttribute(driver, table, columnName)
+ expect(arr.length > 0).to.equal(true)
+ expect(arr.every(item => value.includes(item))).to.equal(
+ true,
+ `Value "${value}" does not includes in all values: [${arr}]`
+ )
+ },
isContainsSubstringInColumnDropdownCells: async function(
driver,
table,
diff --git a/tests/features/common/page-objects/interactive-popup.po.js b/tests/features/common/page-objects/interactive-popup.po.js
index 9a1152566..dbe3e4095 100644
--- a/tests/features/common/page-objects/interactive-popup.po.js
+++ b/tests/features/common/page-objects/interactive-popup.po.js
@@ -1512,7 +1512,14 @@ module.exports = {
},
filterByPopup: {
Title: By.css('[data-testid="pop-up-dialog"] h3'),
- Table_Label_Filter_Input: commonLabelFilterInput,
+ Table_Label_Filter_Input: inputGroup(
+ generateInputGroup(
+ '[data-testid="labels-form-field-input"]',
+ true,
+ false,
+ 'svg'
+ )
+ ),
Table_Project_Filter_Input: commonProjectFilterInput,
Table_Tree_Filter_Dropdown: commonTableTreeFilterDropdown,
Status_Filter_Element: By.css('[data-testid="state-form-field-select"]'),
@@ -1538,6 +1545,14 @@ module.exports = {
icon: ''
}
}),
+ Show_Untagged: checkboxComponent({
+ root: '#overlay_container .form-field-checkbox input',
+ elements: {
+ checkbox: '',
+ name: '',
+ icon: ''
+ }
+ }),
Status_All_Checkbox: checkboxComponent({
root: '[data-testid="select-checkbox"]:nth-of-type(1)',
elements: {
diff --git a/tests/features/common/page-objects/jobs-monitoring.po.js b/tests/features/common/page-objects/jobs-monitoring.po.js
index e8bcaaa09..9a64b7faf 100644
--- a/tests/features/common/page-objects/jobs-monitoring.po.js
+++ b/tests/features/common/page-objects/jobs-monitoring.po.js
@@ -20,13 +20,16 @@ such restriction.
import { By } from 'selenium-webdriver'
import commonTable from '../components/table.component'
import dropdownComponent from '../components/dropdown.component'
+import labelComponent from '../components/label.component'
import {
generateDropdownGroup,
- generateInputGroup
+ generateInputGroup,
+ generateLabelGroup
} from '../../common-tools/common-tools'
import inputGroup from '../components/input-group.component'
import checkboxComponent from '../components/checkbox.component'
import datepicker from '../components/date-picker.component'
+import actionMenu from '../components/action-menu.component'
const tabSelector = {
root: '.content .content-menu',
@@ -42,6 +45,14 @@ const tabSelector = {
}
}
+const actionMenuStructure = {
+ root: '.actions-menu__container',
+ menuElements: {
+ open_button: 'button',
+ options: '.actions-menu__body .actions-menu__option'
+ }
+}
+
const overallTable = {
root: '.table__content',
header: {
@@ -68,7 +79,30 @@ const overallTable = {
uid:
'.table-body__cell:nth-of-type(1) a .date-uid-row .link-subtext:nth-of-type(2)',
duration: '.table-body__cell:nth-of-type(3) .data-ellipsis',
- owner: '.table-body__cell:nth-of-type(4) .data-ellipsis'
+ owner: '.table-body__cell:nth-of-type(4) .data-ellipsis',
+ action_menu: {
+ componentType: actionMenu,
+ structure: actionMenuStructure
+ },
+ labels: {
+ componentType: dropdownComponent,
+ structure: generateDropdownGroup(
+ '.table-body__cell:nth-of-type(7)',
+ '.chip-block span.chips_button',
+ '.chip-block-hidden_visible .data-ellipsis.tooltip-wrapper',
+ false,
+ false
+ )
+ },
+ type: {
+ componentType: labelComponent,
+ structure: generateLabelGroup(
+ '.table-body__cell:nth-of-type(3)',
+ '.data-ellipsis',
+ true,
+ '.tooltip .tooltip__text span'
+ )
+ },
}
}
}
diff --git a/tests/features/common/page-objects/ml-functions.po.js b/tests/features/common/page-objects/ml-functions.po.js
index 702526f74..e090495ae 100644
--- a/tests/features/common/page-objects/ml-functions.po.js
+++ b/tests/features/common/page-objects/ml-functions.po.js
@@ -94,6 +94,7 @@ module.exports = {
false
)
),
+ Table_FilterBy_Button: By.css('[data-testid="filter-menu-btn-tooltip-wrapper"]'),
New_Function_Button: By.css('.content [data-testid="btn"]'),
Table_Refresh_Button: By.css(
'.content [data-testid="refresh-tooltip-wrapper"]'
diff --git a/tests/features/common/page-objects/project-settings.po.js b/tests/features/common/page-objects/project-settings.po.js
index 05e126669..a39df6565 100644
--- a/tests/features/common/page-objects/project-settings.po.js
+++ b/tests/features/common/page-objects/project-settings.po.js
@@ -22,6 +22,7 @@ import commonTable from '../components/table.component'
import inputGroup from '../components/input-group.component'
import textAreaGroup from '../components/text-area.component'
import { generateInputGroup, generateTextAreaGroup } from '../../common-tools/common-tools'
+import checkboxComponent from '../components/checkbox.component'
const tabSelector = {
@@ -185,6 +186,14 @@ module.exports = {
'.input-label-value'
)
),
+ Pull_At_Runtime_Checkbox: checkboxComponent({
+ root: '.settings__source [data-testid="form-field-checkbox"]',
+ elements: {
+ checkbox: 'input',
+ name: '',
+ icon: ''
+ }
+ })
},
secretsTab: {
Secrets_Table: commonTable(secretsTable),
diff --git a/tests/features/common/page-objects/projects.po.js b/tests/features/common/page-objects/projects.po.js
index 6964970c5..18172bf2f 100644
--- a/tests/features/common/page-objects/projects.po.js
+++ b/tests/features/common/page-objects/projects.po.js
@@ -58,6 +58,24 @@ const ProjectsTableSelector = {
'.tooltip .tooltip__text span'
)
},
+ labels_key: {
+ componentType: labelComponent,
+ structure: generateLabelGroup(
+ '[data-testid="project-card__labels"] .chip-block .input-label-key',
+ false,
+ false,
+ '.tooltip .tooltip__text span'
+ )
+ },
+ labels_value: {
+ componentType: labelComponent,
+ structure: generateLabelGroup(
+ '[data-testid="project-card__labels"] .chip-block .input-label-value',
+ false,
+ false,
+ '.tooltip .tooltip__text span'
+ )
+ },
labels: {
componentType: dropdownComponent,
structure: generateDropdownGroup(
diff --git a/tests/features/datasets.feature b/tests/features/datasets.feature
index 46bafc152..5aff63985 100644
--- a/tests/features/datasets.feature
+++ b/tests/features/datasets.feature
@@ -172,6 +172,7 @@ Feature: Datasets Page
Then verify "Header" element visibility on "Datasets_Info_Pane" wizard
Then "Header" element on "Datasets_Info_Pane" should contains "test-dataset" value
Then refresh a page
+ And wait load page
Then verify "Header" element visibility on "Datasets_Info_Pane" wizard
Then "Header" element on "Datasets_Info_Pane" should contains "test-dataset" value
diff --git a/tests/features/jobsAndWorkflows.feature b/tests/features/jobsAndWorkflows.feature
index 5cf5ffa87..a78245d86 100644
--- a/tests/features/jobsAndWorkflows.feature
+++ b/tests/features/jobsAndWorkflows.feature
@@ -1241,9 +1241,13 @@ Feature: Jobs and workflows
Then select "Pods" tab in "Info_Pane_Tab_Selector" on "Workflows_Monitor_Tab_Info_Pane" wizard
And wait load page
Then verify redirection from "projects/churn-project-admin/jobs/monitor-workflows/workflow/eaae138e-439a-47fa-93c6-ba0fe1dc3b79/07f98fb46a424b2dbee5247b35f37727/INVALID" to "projects/churn-project-admin/jobs/monitor-workflows/workflow/eaae138e-439a-47fa-93c6-ba0fe1dc3b79/07f98fb46a424b2dbee5247b35f37727/overview"
+ And wait load page
Then verify redirection from "projects/churn-project-admin/jobs/monitor-workflows/workflow/INVALID/07f98fb46a424b2dbee5247b35f37727/overview" to "projects/churn-project-admin/jobs/monitor-workflows"
+ And wait load page
Then verify redirection from "projects/churn-project-admin/jobs/monitor-workflows/workflow/eaae138e-439a-47fa-93c6-ba0fe1dc3b79/INVALID/overview" to "projects/churn-project-admin/jobs/monitor-workflows"
+ And wait load page
Then verify redirection from "projects/INVALID/jobs/monitor-workflows/workflow/eaae138e-439a-47fa-93c6-ba0fe1dc3b79/07f98fb46a424b2dbee5247b35f37727/overview" to "projects"
+ And wait load page
@MLJW
@smoke
diff --git a/tests/features/jobsMonitoring.feature b/tests/features/jobsMonitoring.feature
index 1305b2863..18bf87dc2 100644
--- a/tests/features/jobsMonitoring.feature
+++ b/tests/features/jobsMonitoring.feature
@@ -8,7 +8,6 @@ Feature: Jobs Monitoring Page
Given open url
And wait load page
Then verify "Monitoring_Container" element visibility in "Projects_Monitoring_Container" on "Projects" wizard
- Then "Total_Counter_Number" element in "Monitoring_Jobs_Box" on "Projects" should contains "19" value
When click on "See_All_Link" element in "Monitoring_Jobs_Box" on "Projects" wizard
And wait load page
Then verify redirection to "projects/*/jobs-monitoring/jobs"
@@ -17,7 +16,6 @@ Feature: Jobs Monitoring Page
Then verify "Cross_Jobs_Tab_Selector" on "Jobs_Monitoring_Jobs_Tab" wizard should contains "Jobs_Monitoring"."Tab_List"
Then verify "Jobs" tab is active in "Cross_Jobs_Tab_Selector" on "Jobs_Monitoring_Jobs_Tab" wizard
Then verify "Jobs_Table" element visibility on "Jobs_Monitoring_Jobs_Tab" wizard
- Then verify that 6 row elements are displayed in "Jobs_Table" on "Jobs_Monitoring_Jobs_Tab" wizard
Then verify "Search_By_Name_Filter_Input" element visibility on "Jobs_Monitoring_Jobs_Tab" wizard
Then verify "Date_Picker_Filter_Dropdown" element visibility on "Jobs_Monitoring_Jobs_Tab" wizard
Then verify "Date_Picker_Filter_Dropdown" dropdown on "Jobs_Monitoring_Workflows_Tab" wizard selected option value "Past 24 hours"
@@ -52,7 +50,6 @@ Feature: Jobs Monitoring Page
Then navigate back
And wait load page
Then verify "Counter_Running_Status_Number" element visibility in "Monitoring_Jobs_Box" on "Projects" wizard
- Then "Counter_Running_Status_Number" element in "Monitoring_Jobs_Box" on "Projects" should contains "16" value
When click on "Counter_Running_Status_Number" element in "Monitoring_Jobs_Box" on "Projects" wizard
And wait load page
Then verify "Jobs" tab is active in "Cross_Jobs_Tab_Selector" on "Jobs_Monitoring_Jobs_Tab" wizard
@@ -67,11 +64,9 @@ Feature: Jobs Monitoring Page
Then "Status_Jobs_Running_Checkbox" element should be checked on "FilterBy_Popup" wizard
Then "Status_Pending_Checkbox" element should be checked on "FilterBy_Popup" wizard
Then verify "Jobs_Table" element visibility on "Jobs_Monitoring_Jobs_Tab" wizard
- Then verify that 15 row elements are displayed in "Jobs_Table" on "Jobs_Monitoring_Jobs_Tab" wizard
Then click on breadcrumbs "projectsPage" label on "commonPagesHeader" wizard
And wait load page
Then verify "Counter_Failed_Status_Number" element visibility in "Monitoring_Jobs_Box" on "Projects" wizard
- Then "Counter_Failed_Status_Number" element in "Monitoring_Jobs_Box" on "Projects" should contains "2" value
When click on "Counter_Failed_Status_Number" element in "Monitoring_Jobs_Box" on "Projects" wizard
And wait load page
Then verify "Jobs" tab is active in "Cross_Jobs_Tab_Selector" on "Jobs_Monitoring_Jobs_Tab" wizard
@@ -88,11 +83,9 @@ Feature: Jobs Monitoring Page
Then "Status_Aborted_Checkbox" element should be checked on "FilterBy_Popup" wizard
Then "Status_Jobs_Error_Checkbox" element should be checked on "FilterBy_Popup" wizard
Then verify "Jobs_Table" element visibility on "Jobs_Monitoring_Jobs_Tab" wizard
- Then verify that 2 row elements are displayed in "Jobs_Table" on "Jobs_Monitoring_Jobs_Tab" wizard
Then click on breadcrumbs "projectsPage" label on "commonPagesHeader" wizard
And wait load page
Then verify "Counter_Completed_Status_Number" element visibility in "Monitoring_Jobs_Box" on "Projects" wizard
- Then "Counter_Completed_Status_Number" element in "Monitoring_Jobs_Box" on "Projects" should contains "1" value
When click on "Counter_Completed_Status_Number" element in "Monitoring_Jobs_Box" on "Projects" wizard
And wait load page
Then verify "Jobs" tab is active in "Cross_Jobs_Tab_Selector" on "Jobs_Monitoring_Jobs_Tab" wizard
@@ -110,7 +103,6 @@ Feature: Jobs Monitoring Page
Then "Status_Jobs_Error_Checkbox" element should be unchecked on "FilterBy_Popup" wizard
Then "Status_Jobs_Completed_Checkbox" element should be checked on "FilterBy_Popup" wizard
Then verify "Jobs_Table" element visibility on "Jobs_Monitoring_Jobs_Tab" wizard
- Then verify that 1 row elements are displayed in "Jobs_Table" on "Jobs_Monitoring_Jobs_Tab" wizard
And select "crossTab" with "Jobs monitoring" value in breadcrumbs menu
Then verify redirection to "projects/*/jobs-monitoring/jobs"
Then click on breadcrumbs "projectsPage" label on "commonPagesHeader" wizard
@@ -124,7 +116,7 @@ Feature: Jobs Monitoring Page
Then click on "Apply_Button" element on "FilterBy_Popup" wizard
And wait load page
Then "Error_Message" component on "Jobs_Monitoring_Jobs_Tab" should be equal "No_Data_Message"."Common_Message_Jobs_Monitoring"
-
+
@MLJM
@smoke
Scenario: MLJM004 - Check search by name, project name, filter by Date picker on Jobs tab of Jobs monitoring page
@@ -155,7 +147,7 @@ Feature: Jobs Monitoring Page
And wait load page
Then verify "Date_Picker_Filter_Dropdown" dropdown on "Jobs_Monitoring_Jobs_Tab" wizard selected option value "Past 24 hours"
Then verify "Jobs_Table" element visibility on "Jobs_Monitoring_Jobs_Tab" wizard
- Then verify that 6 row elements are displayed in "Jobs_Table" on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then verify that 7 row elements are displayed in "Jobs_Table" on "Jobs_Monitoring_Jobs_Tab" wizard
When select "Any time" option in "Date_Picker_Filter_Dropdown" filter dropdown on "Jobs_Monitoring_Jobs_Tab" wizard
And wait load page
Then verify "Date_Picker_Filter_Dropdown" dropdown on "Jobs_Monitoring_Jobs_Tab" wizard selected option value "Any time"
@@ -169,21 +161,227 @@ Feature: Jobs Monitoring Page
And wait load page
Then verify "Date_Picker_Filter_Dropdown" dropdown on "Jobs_Monitoring_Jobs_Tab" wizard selected option value "Past week"
Then verify "Jobs_Table" element visibility on "Jobs_Monitoring_Jobs_Tab" wizard
- Then verify that 6 row elements are displayed in "Jobs_Table" on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then verify that 7 row elements are displayed in "Jobs_Table" on "Jobs_Monitoring_Jobs_Tab" wizard
When select "Past month" option in "Date_Picker_Filter_Dropdown" filter dropdown on "Jobs_Monitoring_Jobs_Tab" wizard
And wait load page
Then verify "Date_Picker_Filter_Dropdown" dropdown on "Jobs_Monitoring_Jobs_Tab" wizard selected option value "Past month"
Then verify "Jobs_Table" element visibility on "Jobs_Monitoring_Jobs_Tab" wizard
- Then verify that 6 row elements are displayed in "Jobs_Table" on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then verify that 7 row elements are displayed in "Jobs_Table" on "Jobs_Monitoring_Jobs_Tab" wizard
When select "Past year" option in "Date_Picker_Filter_Dropdown" filter dropdown on "Jobs_Monitoring_Jobs_Tab" wizard
And wait load page
Then verify "Date_Picker_Filter_Dropdown" dropdown on "Jobs_Monitoring_Jobs_Tab" wizard selected option value "Past year"
Then verify "Jobs_Table" element visibility on "Jobs_Monitoring_Jobs_Tab" wizard
- Then verify that 6 row elements are displayed in "Jobs_Table" on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then verify that 7 row elements are displayed in "Jobs_Table" on "Jobs_Monitoring_Jobs_Tab" wizard
When pick up "Custom range" from "09/03/2024 00:00" to "09/04/2024 00:00" in "Date_Time_Picker" via "Date_Picker_Filter_Dropdown" on "Jobs_Monitoring_Jobs_Tab" wizard
Then verify from "09/03/2024 00:00" to "09/04/2024 00:00" filter band in "Custom_Range_Filter_Dropdown" filter dropdown on "Jobs_Monitoring_Jobs_Tab" wizard
And wait load page
-
+
+ @MLJM
+ @smoke
+ Scenario: MLJM007 - Check filter by Statuses and View Yaml action on Jobs tab of Jobs monitoring page
+ Given open url
+ And wait load page
+ When click on "See_All_Link" element in "Monitoring_Jobs_Box" on "Projects" wizard
+ And wait load page
+ Then verify redirection to "projects/*/jobs-monitoring/jobs"
+ Then click on "Table_FilterBy_Button" element on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then verify "Status_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard selected option value "All"
+ Then verify "Type_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard selected option value "All"
+ When select "Aborted" option in "Status_Filter_Dropdown" filter dropdown on "FilterBy_Popup" wizard
+ Then click on "Title" element on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
+ Then verify "Jobs_Table" element visibility on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then verify "Status_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard selected option value "Aborted"
+ When select "Aborting" option in "Status_Filter_Dropdown" filter dropdown on "FilterBy_Popup" wizard
+ Then click on "Title" element on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
+ Then verify "Jobs_Table" element visibility on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then verify "Status_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard selected option value "Aborted, Aborting"
+ When select "Completed" option in "Status_Filter_Dropdown" filter dropdown on "FilterBy_Popup" wizard
+ Then click on "Title" element on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
+ Then verify "Jobs_Table" element visibility on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then verify "Status_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard selected option value "3 items selected"
+ When select "Error" option in "Status_Filter_Dropdown" filter dropdown on "FilterBy_Popup" wizard
+ Then click on "Title" element on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
+ Then verify "Jobs_Table" element visibility on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then verify "Status_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard selected option value "4 items selected"
+ When select "Running" option in "Status_Filter_Dropdown" filter dropdown on "FilterBy_Popup" wizard
+ Then click on "Title" element on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
+ Then verify "Jobs_Table" element visibility on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then verify "Status_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard selected option value "5 items selected"
+ When select "Pending" option in "Status_Filter_Dropdown" filter dropdown on "FilterBy_Popup" wizard
+ Then click on "Title" element on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
+ Then verify "Jobs_Table" element visibility on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then verify "Status_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard selected option value "All"
+ Then click on "Table_FilterBy_Button" element on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then select "View YAML" option in action menu on "Jobs_Monitoring_Jobs_Tab" wizard in "Jobs_Table" table at row with "test" value in "name" column
+ Then verify if "View_YAML" popup dialog appears
+ Then verify "Cross_Cancel_Button" element visibility on "View_YAML" wizard
+ Then verify "YAML_Modal_Container" element visibility on "View_YAML" wizard
+
+ @MLJM
+ @smoke
+ Scenario: MLJM010 - Check filter by Types on Jobs tab of Jobs monitoring page
+ Given open url
+ And wait load page
+ When click on "See_All_Link" element in "Monitoring_Jobs_Box" on "Projects" wizard
+ And wait load page
+ Then verify redirection to "projects/*/jobs-monitoring/jobs"
+ Then click on "Table_FilterBy_Button" element on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then verify "Status_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard selected option value "All"
+ Then verify "Type_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard selected option value "All"
+ When select "Job" option in "Type_Filter_Dropdown" filter dropdown on "FilterBy_Popup" wizard
+ Then click on "Title" element on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
+ Then verify "Jobs_Table" element visibility on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then verify "Type_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard selected option value "Job"
+ When select "Nuclio" option in "Type_Filter_Dropdown" filter dropdown on "FilterBy_Popup" wizard
+ Then click on "Title" element on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
+ Then verify "Jobs_Table" element visibility on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then verify "Type_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard selected option value "Nuclio"
+ When select "Application" option in "Type_Filter_Dropdown" filter dropdown on "FilterBy_Popup" wizard
+ Then click on "Title" element on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
+ And verify "No_Data_Message" element visibility on "commonPagesHeader" wizard
+ Then "No_Data_Message" component on "commonPagesHeader" should be equal "No_Data_Message"."Common_Message_Jobs_Monitoring_Type"
+ Then click on "Table_FilterBy_Button" element on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then verify "Type_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard selected option value "Application"
+ When select "Serving" option in "Type_Filter_Dropdown" filter dropdown on "FilterBy_Popup" wizard
+ Then click on "Title" element on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
+ And verify "No_Data_Message" element visibility on "commonPagesHeader" wizard
+ Then "No_Data_Message" component on "commonPagesHeader" should be equal "No_Data_Message"."Common_Message_Jobs_Monitoring_Type"
+ Then click on "Table_FilterBy_Button" element on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then verify "Type_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard selected option value "Serving"
+ When select "Spark" option in "Type_Filter_Dropdown" filter dropdown on "FilterBy_Popup" wizard
+ Then click on "Title" element on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
+ And verify "No_Data_Message" element visibility on "commonPagesHeader" wizard
+ Then "No_Data_Message" component on "commonPagesHeader" should be equal "No_Data_Message"."Common_Message_Jobs_Monitoring_Type"
+ Then click on "Table_FilterBy_Button" element on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then verify "Type_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard selected option value "Spark"
+ When select "Horovod" option in "Type_Filter_Dropdown" filter dropdown on "FilterBy_Popup" wizard
+ Then click on "Title" element on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
+ Then verify "Jobs_Table" element visibility on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then verify "Type_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard selected option value "Horovod"
+ When select "Dask" option in "Type_Filter_Dropdown" filter dropdown on "FilterBy_Popup" wizard
+ Then click on "Title" element on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
+ And verify "No_Data_Message" element visibility on "commonPagesHeader" wizard
+ Then "No_Data_Message" component on "commonPagesHeader" should be equal "No_Data_Message"."Common_Message_Jobs_Monitoring_Type"
+ Then click on "Table_FilterBy_Button" element on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then verify "Type_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard selected option value "Dask"
+ When select "Databricks" option in "Type_Filter_Dropdown" filter dropdown on "FilterBy_Popup" wizard
+ Then click on "Title" element on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
+ And verify "No_Data_Message" element visibility on "commonPagesHeader" wizard
+ Then "No_Data_Message" component on "commonPagesHeader" should be equal "No_Data_Message"."Common_Message_Jobs_Monitoring_Type"
+ Then click on "Table_FilterBy_Button" element on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then verify "Type_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard selected option value "Databricks"
+ When select "Local" option in "Type_Filter_Dropdown" filter dropdown on "FilterBy_Popup" wizard
+ Then click on "Title" element on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
+ And verify "No_Data_Message" element visibility on "commonPagesHeader" wizard
+ Then "No_Data_Message" component on "commonPagesHeader" should be equal "No_Data_Message"."Common_Message_Jobs_Monitoring_Type"
+ Then click on "Table_FilterBy_Button" element on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then verify "Type_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard selected option value "Local"
+ When select "Handler" option in "Type_Filter_Dropdown" filter dropdown on "FilterBy_Popup" wizard
+ Then click on "Title" element on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
+ Then verify "Jobs_Table" element visibility on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then verify "Type_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard selected option value "Handler"
+
+ @MLJM
+ @smoke
+ Scenario: MLJM011 - Check filter by Labels on Jobs tab of Jobs monitoring page
+ Given open url
+ And wait load page
+ When click on "See_All_Link" element in "Monitoring_Jobs_Box" on "Projects" wizard
+ And wait load page
+ Then verify redirection to "projects/*/jobs-monitoring/jobs"
+ Then click on "Table_FilterBy_Button" element on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then verify "Status_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard selected option value "All"
+ Then verify "Type_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard selected option value "All"
+ Then verify "Table_Label_Filter_Input" element visibility on "FilterBy_Popup" wizard
+ Then type value "host" to "Table_Label_Filter_Input" field on "FilterBy_Popup" wizard
+ And wait load page
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
+ Then value in "labels" column with "dropdowns" in "Jobs_Table" on "Jobs_Monitoring_Jobs_Tab" wizard should contains "host"
+ Then click on "Table_FilterBy_Button" element on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then type value "author=yaronh" to "Table_Label_Filter_Input" field on "FilterBy_Popup" wizard
+ And wait load page
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
+ Then value in "labels" column with "dropdowns" in "Jobs_Table" on "Jobs_Monitoring_Jobs_Tab" wizard should contains "author=yaronh"
+ Then click on "Table_FilterBy_Button" element on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then type value " " to "Table_Label_Filter_Input" field on "FilterBy_Popup" wizard
+ Then verify "Table_Label_Filter_Input" on "FilterBy_Popup" wizard should display hover warning "Input_Hint"."Input_Field_Invalid"
+ And select "Scheduled" tab in "Cross_Jobs_Tab_Selector" on "Jobs_Monitoring_Scheduled_Tab" wizard
+ And wait load page
+ And select "Jobs" tab in "Cross_Jobs_Tab_Selector" on "Jobs_Monitoring_Jobs_Tab" wizard
+ And wait load page
+ Then verify options in action menu on "Jobs_Monitoring_Jobs_Tab" wizard in "Jobs_Table" table with "Job" value in "type" column should contains "Jobs_And_Workflows"."Job_Action_Menu_Options"
+ Then select "Batch re-run" option in action menu on "Jobs_Monitoring_Jobs_Tab" wizard in "Jobs_Table" table at row with "sef" value in "name" column
+ And wait load page
+ Then verify "Title" element visibility on "Modal_Wizard_Form" wizard
+ And wait load page
+ Then "Title" element on "Modal_Wizard_Form" should contains "Batch Re-Run" value
+ Then verify "Run_Button" element visibility on "Modal_Wizard_Form" wizard
+ Then "Run_Button" element on "Modal_Wizard_Form" should contains "Run" value
+ And click on "Run_Button" element on "Modal_Wizard_Form" wizard
+ Then wait for 5 seconds
+ Then verify "Notification_Pop_Up" element visibility on "Notification_Popup" wizard
+ Then "Notification_Pop_Up" element on "Notification_Popup" should contains "The batch run was started" value
+ And wait load page
+ Then verify "Notification_Pop_Up_Cross_Close_Button" element visibility on "Notification_Popup" wizard
+ Then click on "Notification_Pop_Up_Cross_Close_Button" element on "Notification_Popup" wizard
+ And wait load page
+ Then select "Delete" option in action menu on "Jobs_Monitoring_Jobs_Tab" wizard in "Jobs_Table" table at row with "qwe" value in "name" column
+ And wait load page
+ Then verify if "Confirm_Popup" popup dialog appears
+ Then "Title" element on "Confirm_Popup" should contains "Delete job?" value
+ When click on "Delete_Button" element on "Confirm_Popup" wizard
+ Then wait for 5 seconds
+ Then verify "Notification_Pop_Up" element visibility on "Notification_Popup" wizard
+ Then "Notification_Pop_Up" element on "Notification_Popup" should contains "Job is successfully deleted" value
+ And wait load page
+ Then verify "Notification_Pop_Up_Cross_Close_Button" element visibility on "Notification_Popup" wizard
+ Then click on "Notification_Pop_Up_Cross_Close_Button" element on "Notification_Popup" wizard
+ And wait load page
+
@MLJM
@smoke
Scenario: MLJM002 - Check components on Workflows tab of Jobs monitoring page
@@ -192,7 +390,6 @@ Feature: Jobs Monitoring Page
Then verify "Monitoring_Container" element visibility in "Projects_Monitoring_Container" on "Projects" wizard
Then verify "Monitoring_Workflows_Box" element visibility in "Projects_Monitoring_Container" on "Projects" wizard
Then verify "Total_Counter_Number" element visibility in "Monitoring_Workflows_Box" on "Projects" wizard
- Then "Total_Counter_Number" element in "Monitoring_Workflows_Box" on "Projects" should contains "2" value
When click on "See_All_Link" element in "Monitoring_Workflows_Box" on "Projects" wizard
And wait load page
Then verify redirection to "projects/*/jobs-monitoring/workflows"
@@ -201,7 +398,6 @@ Feature: Jobs Monitoring Page
Then verify "Cross_Jobs_Tab_Selector" on "Jobs_Monitoring_Workflows_Tab" wizard should contains "Jobs_Monitoring"."Tab_List"
Then verify "Workflows" tab is active in "Cross_Jobs_Tab_Selector" on "Jobs_Monitoring_Workflows_Tab" wizard
Then verify "Workflows_Table" element visibility on "Jobs_Monitoring_Workflows_Tab" wizard
- Then verify that 2 row elements are displayed in "Workflows_Table" on "Jobs_Monitoring_Workflows_Tab" wizard
Then verify "Search_By_Name_Filter_Input" element visibility on "Jobs_Monitoring_Workflows_Tab" wizard
Then verify "Date_Picker_Filter_Dropdown" element visibility on "Jobs_Monitoring_Workflows_Tab" wizard
Then verify "Date_Picker_Filter_Dropdown" dropdown on "Jobs_Monitoring_Workflows_Tab" wizard selected option value "Past 24 hours"
@@ -228,7 +424,6 @@ Feature: Jobs Monitoring Page
Then navigate back
And wait load page
Then verify "Counter_Running_Status_Number" element visibility in "Monitoring_Workflows_Box" on "Projects" wizard
- Then "Counter_Running_Status_Number" element in "Monitoring_Workflows_Box" on "Projects" should contains "0" value
When click on "Counter_Running_Status_Number" element in "Monitoring_Workflows_Box" on "Projects" wizard
And wait load page
Then verify "Workflows" tab is active in "Cross_Jobs_Tab_Selector" on "Jobs_Monitoring_Workflows_Tab" wizard
@@ -241,11 +436,9 @@ Feature: Jobs Monitoring Page
Then "Status_Workflows_Error_Checkbox" element should be unchecked on "FilterBy_Popup" wizard
Then "Status_Failed_Checkbox" element should be unchecked on "FilterBy_Popup" wizard
Then "Status_Workflows_Completed_Checkbox" element should be unchecked on "FilterBy_Popup" wizard
- Then verify that 0 row elements are displayed in "Workflows_Table" on "Jobs_Monitoring_Workflows_Tab" wizard
Then click on breadcrumbs "projectsPage" label on "commonPagesHeader" wizard
And wait load page
Then verify "Counter_Failed_Status_Number" element visibility in "Monitoring_Workflows_Box" on "Projects" wizard
- Then "Counter_Failed_Status_Number" element in "Monitoring_Workflows_Box" on "Projects" should contains "1" value
When click on "Counter_Failed_Status_Number" element in "Monitoring_Workflows_Box" on "Projects" wizard
And wait load page
Then verify "Workflows" tab is active in "Cross_Jobs_Tab_Selector" on "Jobs_Monitoring_Workflows_Tab" wizard
@@ -259,11 +452,9 @@ Feature: Jobs Monitoring Page
Then "Status_Workflows_Running_Checkbox" element should be unchecked on "FilterBy_Popup" wizard
Then "Status_Workflows_Completed_Checkbox" element should be unchecked on "FilterBy_Popup" wizard
Then verify "Workflows_Table" element visibility on "Jobs_Monitoring_Workflows_Tab" wizard
- Then verify that 1 row elements are displayed in "Workflows_Table" on "Jobs_Monitoring_Workflows_Tab" wizard
Then click on breadcrumbs "projectsPage" label on "commonPagesHeader" wizard
And wait load page
Then verify "Counter_Completed_Status_Number" element visibility in "Monitoring_Workflows_Box" on "Projects" wizard
- Then "Counter_Completed_Status_Number" element in "Monitoring_Workflows_Box" on "Projects" should contains "1" value
When click on "Counter_Completed_Status_Number" element in "Monitoring_Workflows_Box" on "Projects" wizard
And wait load page
Then verify "Workflows" tab is active in "Cross_Jobs_Tab_Selector" on "Jobs_Monitoring_Workflows_Tab" wizard
@@ -277,7 +468,6 @@ Feature: Jobs Monitoring Page
Then "Status_Workflows_Running_Checkbox" element should be unchecked on "FilterBy_Popup" wizard
Then "Status_Workflows_Completed_Checkbox" element should be checked on "FilterBy_Popup" wizard
Then verify "Workflows_Table" element visibility on "Jobs_Monitoring_Workflows_Tab" wizard
- Then verify that 1 row elements are displayed in "Workflows_Table" on "Jobs_Monitoring_Workflows_Tab" wizard
And select "crossTab" with "Jobs monitoring" value in breadcrumbs menu
Then verify redirection to "projects/*/jobs-monitoring/jobs"
Then click on breadcrumbs "projectsPage" label on "commonPagesHeader" wizard
@@ -361,6 +551,51 @@ Feature: Jobs Monitoring Page
When pick up "Custom range" from "09/03/2024 00:00" to "09/04/2024 00:00" in "Date_Time_Picker" via "Date_Picker_Filter_Dropdown" on "Jobs_Monitoring_Workflows_Tab" wizard
Then verify from "09/03/2024 00:00" to "09/04/2024 00:00" filter band in "Custom_Range_Filter_Dropdown" filter dropdown on "Jobs_Monitoring_Workflows_Tab" wizard
And wait load page
+
+ @MLJM
+ @smoke
+ Scenario: MLJM008 - Check filter by Statuses and View Yaml action on Workflows tab of Jobs monitoring page
+ Given open url
+ And wait load page
+ When click on "See_All_Link" element in "Monitoring_Workflows_Box" on "Projects" wizard
+ And wait load page
+ Then verify redirection to "projects/*/jobs-monitoring/workflows"
+ Then click on "Table_FilterBy_Button" element on "Jobs_Monitoring_Workflows_Tab" wizard
+ Then verify "Status_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard selected option value "All"
+ When select "Error" option in "Status_Filter_Dropdown" filter dropdown on "FilterBy_Popup" wizard
+ Then click on "Title" element on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
+ And verify "No_Data_Message" element visibility on "commonPagesHeader" wizard
+ Then "No_Data_Message" component on "commonPagesHeader" should be equal "No_Data_Message"."Common_Message_Jobs_Monitoring_Status"
+ Then click on "Table_FilterBy_Button" element on "Jobs_Monitoring_Workflows_Tab" wizard
+ Then verify "Status_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard selected option value "Error"
+ When select "Failed" option in "Status_Filter_Dropdown" filter dropdown on "FilterBy_Popup" wizard
+ Then click on "Title" element on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
+ Then verify "Workflows_Table" element visibility on "Jobs_Monitoring_Workflows_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Jobs_Monitoring_Workflows_Tab" wizard
+ Then verify "Status_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard selected option value "Error, Failed"
+ When select "Running" option in "Status_Filter_Dropdown" filter dropdown on "FilterBy_Popup" wizard
+ Then click on "Title" element on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
+ Then verify "Workflows_Table" element visibility on "Jobs_Monitoring_Workflows_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Jobs_Monitoring_Workflows_Tab" wizard
+ Then verify "Status_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard selected option value "3 items selected"
+ When select "Completed" option in "Status_Filter_Dropdown" filter dropdown on "FilterBy_Popup" wizard
+ Then click on "Title" element on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
+ Then verify "Workflows_Table" element visibility on "Jobs_Monitoring_Workflows_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Jobs_Monitoring_Workflows_Tab" wizard
+ Then verify "Status_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard selected option value "All"
+ Then click on "Table_FilterBy_Button" element on "Jobs_Monitoring_Workflows_Tab" wizard
+ Then select "View YAML" option in action menu on "Jobs_Monitoring_Workflows_Tab" wizard in "Workflows_Table" table at row with "kfpipeline 2021-07-06 11-16-28" value in "name" column
+ Then verify if "View_YAML" popup dialog appears
+ Then verify "Cross_Cancel_Button" element visibility on "View_YAML" wizard
+ Then verify "YAML_Modal_Container" element visibility on "View_YAML" wizard
@MLJM
@smoke
@@ -372,7 +607,6 @@ Feature: Jobs Monitoring Page
Then verify "Total_Job_Counter_Title" element visibility in "Monitoring_Scheduled_Box" on "Projects" wizard
Then "Total_Job_Counter_Title" element in "Monitoring_Scheduled_Box" on "Projects" should contains "Jobs" value
Then verify "Total_Job_Counter_Number" element visibility in "Monitoring_Scheduled_Box" on "Projects" wizard
- Then "Total_Job_Counter_Number" element in "Monitoring_Scheduled_Box" on "Projects" should contains "7" value
Then verify "Jobs_See_All_Link" element visibility in "Monitoring_Scheduled_Box" on "Projects" wizard
When click on "Jobs_See_All_Link" element in "Monitoring_Scheduled_Box" on "Projects" wizard
And wait load page
@@ -382,7 +616,6 @@ Feature: Jobs Monitoring Page
Then verify "Cross_Jobs_Tab_Selector" on "Jobs_Monitoring_Scheduled_Tab" wizard should contains "Jobs_Monitoring"."Tab_List"
Then verify "Scheduled" tab is active in "Cross_Jobs_Tab_Selector" on "Jobs_Monitoring_Scheduled_Tab" wizard
Then verify "Scheduled_Table" element visibility on "Jobs_Monitoring_Scheduled_Tab" wizard
- Then verify that 7 row elements are displayed in "Scheduled_Table" on "Jobs_Monitoring_Scheduled_Tab" wizard
Then verify "Search_By_Name_Filter_Input" element visibility on "Jobs_Monitoring_Scheduled_Tab" wizard
Then verify "Date_Picker_Filter_Dropdown" element visibility on "Jobs_Monitoring_Scheduled_Tab" wizard
Then verify "Date_Picker_Filter_Dropdown" dropdown on "Jobs_Monitoring_Scheduled_Tab" wizard selected option value "Next 24 hours"
@@ -408,7 +641,6 @@ Feature: Jobs Monitoring Page
Then verify "Total_Workflows_Counter_Title" element visibility in "Monitoring_Scheduled_Box" on "Projects" wizard
Then "Total_Workflows_Counter_Title" element in "Monitoring_Scheduled_Box" on "Projects" should contains "Workflows" value
Then verify "Total_Workflows_Counter_Number" element visibility in "Monitoring_Scheduled_Box" on "Projects" wizard
- Then "Total_Workflows_Counter_Number" element in "Monitoring_Scheduled_Box" on "Projects" should contains "1" value
Then verify "Workflows_See_All_Link" element visibility in "Monitoring_Scheduled_Box" on "Projects" wizard
When click on "Workflows_See_All_Link" element in "Monitoring_Scheduled_Box" on "Projects" wizard
Then verify redirection to "projects/*/jobs-monitoring/scheduled"
@@ -417,7 +649,6 @@ Feature: Jobs Monitoring Page
Then verify "Cross_Jobs_Tab_Selector" on "Jobs_Monitoring_Scheduled_Tab" wizard should contains "Jobs_Monitoring"."Tab_List"
Then verify "Scheduled" tab is active in "Cross_Jobs_Tab_Selector" on "Jobs_Monitoring_Scheduled_Tab" wizard
Then verify "Scheduled_Table" element visibility on "Jobs_Monitoring_Scheduled_Tab" wizard
- Then verify that 1 row elements are displayed in "Scheduled_Table" on "Jobs_Monitoring_Scheduled_Tab" wizard
Then verify "Search_By_Name_Filter_Input" element visibility on "Jobs_Monitoring_Scheduled_Tab" wizard
Then verify "Date_Picker_Filter_Dropdown" element visibility on "Jobs_Monitoring_Scheduled_Tab" wizard
Then verify "Date_Picker_Filter_Dropdown" dropdown on "Jobs_Monitoring_Scheduled_Tab" wizard selected option value "Next 24 hours"
@@ -444,7 +675,6 @@ Feature: Jobs Monitoring Page
Then verify "Total_Scheduled_Title" element visibility in "Monitoring_Scheduled_Box" on "Projects" wizard
Then "Total_Scheduled_Title" element in "Monitoring_Scheduled_Box" on "Projects" should contains "Total" value
Then verify "Total_Job_Counter_Number" element visibility in "Monitoring_Scheduled_Box" on "Projects" wizard
- Then "Total_Scheduled_Number" element in "Monitoring_Scheduled_Box" on "Projects" should contains "8" value
Then verify "Total_See_All_Link" element visibility in "Monitoring_Scheduled_Box" on "Projects" wizard
When click on "Total_See_All_Link" element in "Monitoring_Scheduled_Box" on "Projects" wizard
And wait load page
@@ -521,3 +751,138 @@ Feature: Jobs Monitoring Page
When pick up "Custom range" from "09/03/2024 00:00" to "09/04/2024 00:00" in "Date_Time_Picker" via "Date_Picker_Filter_Dropdown" on "Jobs_Monitoring_Scheduled_Tab" wizard
Then verify from "09/03/2024 00:00" to "09/04/2024 00:00" filter band in "Custom_Range_Filter_Dropdown" filter dropdown on "Jobs_Monitoring_Scheduled_Tab" wizard
And wait load page
+
+ @MLJM
+ @smoke
+ Scenario: MLJM009 - Check filter by Statuses and View Yaml action on Scheduled tab of Jobs monitoring page
+ Given open url
+ And wait load page
+ When click on "Total_See_All_Link" element in "Monitoring_Scheduled_Box" on "Projects" wizard
+ And wait load page
+ Then verify redirection to "projects/*/jobs-monitoring/scheduled"
+ Then click on "Table_FilterBy_Button" element on "Jobs_Monitoring_Scheduled_Tab" wizard
+ Then verify "Type_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard selected option value "All"
+ When select "Jobs" option in "Type_Filter_Dropdown" filter dropdown on "FilterBy_Popup" wizard
+ Then click on "Title" element on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
+ Then verify "Scheduled_Table" element visibility on "Jobs_Monitoring_Scheduled_Tab" wizard
+ Then select "View YAML" option in action menu on "Jobs_Monitoring_Scheduled_Tab" wizard in "Scheduled_Table" table at row with "clean-data" value in "name" column
+ Then verify if "View_YAML" popup dialog appears
+ Then verify "Cross_Cancel_Button" element visibility on "View_YAML" wizard
+ Then verify "YAML_Modal_Container" element visibility on "View_YAML" wizard
+ Then click on "Cross_Cancel_Button" element on "View_YAML" wizard
+ And wait load page
+ Then click on "Table_FilterBy_Button" element on "Jobs_Monitoring_Scheduled_Tab" wizard
+ Then verify "Type_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard selected option value "Jobs"
+ When select "Workflows" option in "Type_Filter_Dropdown" filter dropdown on "FilterBy_Popup" wizard
+ Then click on "Title" element on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
+ Then verify "Scheduled_Table" element visibility on "Jobs_Monitoring_Scheduled_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Jobs_Monitoring_Scheduled_Tab" wizard
+ Then verify "Type_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard selected option value "Workflows"
+ Then click on "Table_FilterBy_Button" element on "Jobs_Monitoring_Scheduled_Tab" wizard
+ Then select "View YAML" option in action menu on "Jobs_Monitoring_Scheduled_Tab" wizard in "Scheduled_Table" table at row with "main3" value in "name" column
+ Then verify if "View_YAML" popup dialog appears
+ Then verify "Cross_Cancel_Button" element visibility on "View_YAML" wizard
+ Then verify "YAML_Modal_Container" element visibility on "View_YAML" wizard
+
+ @MLJM
+ @smoke
+ Scenario: MLJM012 - Check jobs/workflows/scheduled count consistency among counter data and Jobs monitoring Tabs
+ Given open url
+ And wait load page
+ Then verify "Monitoring_Container" element visibility in "Projects_Monitoring_Container" on "Projects" wizard
+ Then "Total_Counter_Number" element in "Monitoring_Jobs_Box" on "Projects" should contains "20" value
+ When click on "See_All_Link" element in "Monitoring_Jobs_Box" on "Projects" wizard
+ And wait load page
+ Then verify redirection to "projects/*/jobs-monitoring/jobs"
+ Then verify "Jobs" tab is active in "Cross_Jobs_Tab_Selector" on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then verify "Jobs_Table" element visibility on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then verify that 7 row elements are displayed in "Jobs_Table" on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then navigate back
+ And wait load page
+ Then verify "Counter_Running_Status_Number" element visibility in "Monitoring_Jobs_Box" on "Projects" wizard
+ Then "Counter_Running_Status_Number" element in "Monitoring_Jobs_Box" on "Projects" should contains "16" value
+ When click on "Counter_Running_Status_Number" element in "Monitoring_Jobs_Box" on "Projects" wizard
+ And wait load page
+ Then verify "Jobs_Table" element visibility on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then verify that 15 row elements are displayed in "Jobs_Table" on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then click on breadcrumbs "projectsPage" label on "commonPagesHeader" wizard
+ And wait load page
+ Then verify "Counter_Failed_Status_Number" element visibility in "Monitoring_Jobs_Box" on "Projects" wizard
+ Then "Counter_Failed_Status_Number" element in "Monitoring_Jobs_Box" on "Projects" should contains "3" value
+ When click on "Counter_Failed_Status_Number" element in "Monitoring_Jobs_Box" on "Projects" wizard
+ And wait load page
+ Then verify "Jobs_Table" element visibility on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then verify that 3 row elements are displayed in "Jobs_Table" on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then click on breadcrumbs "projectsPage" label on "commonPagesHeader" wizard
+ And wait load page
+ Then verify "Counter_Completed_Status_Number" element visibility in "Monitoring_Jobs_Box" on "Projects" wizard
+ Then "Counter_Completed_Status_Number" element in "Monitoring_Jobs_Box" on "Projects" should contains "1" value
+ When click on "Counter_Completed_Status_Number" element in "Monitoring_Jobs_Box" on "Projects" wizard
+ And wait load page
+ Then verify "Jobs_Table" element visibility on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then verify that 1 row elements are displayed in "Jobs_Table" on "Jobs_Monitoring_Jobs_Tab" wizard
+ Then click on breadcrumbs "projectsPage" label on "commonPagesHeader" wizard
+ And wait load page
+ Then verify "Total_Counter_Number" element visibility in "Monitoring_Workflows_Box" on "Projects" wizard
+ Then "Total_Counter_Number" element in "Monitoring_Workflows_Box" on "Projects" should contains "3" value
+ When click on "See_All_Link" element in "Monitoring_Workflows_Box" on "Projects" wizard
+ And wait load page
+ Then verify redirection to "projects/*/jobs-monitoring/workflows"
+ Then verify "Workflows_Table" element visibility on "Jobs_Monitoring_Workflows_Tab" wizard
+ Then verify that 3 row elements are displayed in "Workflows_Table" on "Jobs_Monitoring_Workflows_Tab" wizard
+ Then navigate back
+ And wait load page
+ Then verify "Counter_Running_Status_Number" element visibility in "Monitoring_Workflows_Box" on "Projects" wizard
+ Then "Counter_Running_Status_Number" element in "Monitoring_Workflows_Box" on "Projects" should contains "0" value
+ When click on "Counter_Running_Status_Number" element in "Monitoring_Workflows_Box" on "Projects" wizard
+ And wait load page
+ Then verify that 0 row elements are displayed in "Workflows_Table" on "Jobs_Monitoring_Workflows_Tab" wizard
+ Then click on breadcrumbs "projectsPage" label on "commonPagesHeader" wizard
+ And wait load page
+ Then verify "Counter_Failed_Status_Number" element visibility in "Monitoring_Workflows_Box" on "Projects" wizard
+ Then "Counter_Failed_Status_Number" element in "Monitoring_Workflows_Box" on "Projects" should contains "1" value
+ When click on "Counter_Failed_Status_Number" element in "Monitoring_Workflows_Box" on "Projects" wizard
+ And wait load page
+ Then verify "Workflows_Table" element visibility on "Jobs_Monitoring_Workflows_Tab" wizard
+ Then verify that 1 row elements are displayed in "Workflows_Table" on "Jobs_Monitoring_Workflows_Tab" wizard
+ Then click on breadcrumbs "projectsPage" label on "commonPagesHeader" wizard
+ And wait load page
+ Then verify "Counter_Completed_Status_Number" element visibility in "Monitoring_Workflows_Box" on "Projects" wizard
+ Then "Counter_Completed_Status_Number" element in "Monitoring_Workflows_Box" on "Projects" should contains "2" value
+ When click on "Counter_Completed_Status_Number" element in "Monitoring_Workflows_Box" on "Projects" wizard
+ And wait load page
+ Then verify "Workflows_Table" element visibility on "Jobs_Monitoring_Workflows_Tab" wizard
+ Then verify that 2 row elements are displayed in "Workflows_Table" on "Jobs_Monitoring_Workflows_Tab" wizard
+ Then click on breadcrumbs "projectsPage" label on "commonPagesHeader" wizard
+ And wait load page
+ Then "Total_Job_Counter_Number" element in "Monitoring_Scheduled_Box" on "Projects" should contains "7" value
+ Then verify "Jobs_See_All_Link" element visibility in "Monitoring_Scheduled_Box" on "Projects" wizard
+ When click on "Jobs_See_All_Link" element in "Monitoring_Scheduled_Box" on "Projects" wizard
+ And wait load page
+ Then verify redirection to "projects/*/jobs-monitoring/scheduled"
+ Then verify "Scheduled_Table" element visibility on "Jobs_Monitoring_Scheduled_Tab" wizard
+ Then verify that 7 row elements are displayed in "Scheduled_Table" on "Jobs_Monitoring_Scheduled_Tab" wizard
+ Then navigate back
+ And wait load page
+ Then "Total_Workflows_Counter_Number" element in "Monitoring_Scheduled_Box" on "Projects" should contains "1" value
+ Then verify "Workflows_See_All_Link" element visibility in "Monitoring_Scheduled_Box" on "Projects" wizard
+ When click on "Workflows_See_All_Link" element in "Monitoring_Scheduled_Box" on "Projects" wizard
+ And wait load page
+ Then verify redirection to "projects/*/jobs-monitoring/scheduled"
+ Then verify "Scheduled_Table" element visibility on "Jobs_Monitoring_Scheduled_Tab" wizard
+ Then verify that 1 row elements are displayed in "Scheduled_Table" on "Jobs_Monitoring_Scheduled_Tab" wizard
+ Then click on breadcrumbs "projectsPage" label on "commonPagesHeader" wizard
+ And wait load page
+ Then verify redirection to "projects"
+ Then "Total_Scheduled_Number" element in "Monitoring_Scheduled_Box" on "Projects" should contains "8" value
+ Then verify "Total_See_All_Link" element visibility in "Monitoring_Scheduled_Box" on "Projects" wizard
+ When click on "Total_See_All_Link" element in "Monitoring_Scheduled_Box" on "Projects" wizard
+ And wait load page
+ Then verify redirection to "projects/*/jobs-monitoring/scheduled"
+ Then verify "Scheduled_Table" element visibility on "Jobs_Monitoring_Scheduled_Tab" wizard
+ Then verify that 8 row elements are displayed in "Scheduled_Table" on "Jobs_Monitoring_Scheduled_Tab" wizard
+
diff --git a/tests/features/models.feature b/tests/features/models.feature
index e77b17095..f31cf4278 100644
--- a/tests/features/models.feature
+++ b/tests/features/models.feature
@@ -708,6 +708,7 @@ Feature: Models Page
Then verify "Header" element visibility on "Models_Info_Pane" wizard
Then "Header" element on "Models_Info_Pane" should contains "test-model" value
Then refresh a page
+ And wait load page
Then verify "Header" element visibility on "Models_Info_Pane" wizard
Then "Header" element on "Models_Info_Pane" should contains "test-model" value
diff --git a/tests/features/projectMonitoring.feature b/tests/features/projectMonitoring.feature
index c664b5272..57214dcf1 100644
--- a/tests/features/projectMonitoring.feature
+++ b/tests/features/projectMonitoring.feature
@@ -23,7 +23,7 @@ Feature: Project Monitoring Page
@MLPM
@passive
@smoke
- Scenario: MLNB001 - Check all mandatory components on Navigation Bar
+ Scenario: MLPM001 - Check all mandatory components on Navigation Bar
Given open url
And click on row root with value "default" in "name" column in "Projects_Table" table on "Projects" wizard
And wait load page
@@ -180,12 +180,12 @@ Feature: Project Monitoring Page
Then verify "New_File_Type_Dropdown" dropdown on "Register_File_Popup" wizard selected option value "Table"
@MLPM
- @FAILED_TODO
- #TODO: 'Register Model' option is missing in list of 'Create New' dropdown in demo mode
@passive
@smoke
Scenario: MLPM005 - Check all mandatory components on Register Model Popup
Given open url
+ And turn on demo mode
+ And wait load page
And click on row root with value "default" in "name" column in "Projects_Table" table on "Projects" wizard
And wait load page
Then verify "Create_New" element visibility on "Project" wizard
@@ -633,7 +633,7 @@ Feature: Project Monitoring Page
@MLPM
@passive
@smoke
- Scenario: MLB003 - Verify behaviour of Breadcrumbs menu
+ Scenario: MLPM022 - Verify behaviour of Breadcrumbs menu
Given open url
And click on row root with value "churn-project-admin" in "name" column in "Projects_Table" table on "Projects" wizard
And wait load page
diff --git a/tests/features/projectSettings.feature b/tests/features/projectSettings.feature
index eaf788842..ec349ad03 100644
--- a/tests/features/projectSettings.feature
+++ b/tests/features/projectSettings.feature
@@ -25,6 +25,34 @@ Feature: Project Settings page
Then verify "Source_URL_Input" on "Project_Settings_General_Tab" wizard should display "Input_Hint"."Source_URL_Input"
Then type value " " to "Source_URL_Input" field on "Project_Settings_General_Tab" wizard
Then verify "Source_URL_Input" on "Project_Settings_General_Tab" wizard should display hover warning "Input_Hint"."Input_Field_Invalid"
+ Then type value "test" to "Source_URL_Input" field on "Project_Settings_General_Tab" wizard
+ Then verify "Pull_At_Runtime_Checkbox" element visibility on "Project_Settings_General_Tab" wizard
+ Then "Pull_At_Runtime_Checkbox" element should be unchecked on "Project_Settings_General_Tab" wizard
+ Then check "Pull_At_Runtime_Checkbox" element on "Project_Settings_General_Tab" wizard
+ And wait load page
+ Then verify if "Notification_Popup" popup dialog appears
+ Then "Notification_Pop_Up" element on "Notification_Popup" should contains "Data was edited successfully" value
+ Then verify "Notification_Pop_Up_Cross_Close_Button" element visibility on "Notification_Popup" wizard
+ Then click on "Notification_Pop_Up_Cross_Close_Button" element on "Notification_Popup" wizard
+ And wait load page
+ Then click on "Notification_Pop_Up_Cross_Close_Button" element on "Notification_Popup" wizard
+ And wait load page
+ Then "Pull_At_Runtime_Checkbox" element should be checked on "Project_Settings_General_Tab" wizard
+ Then click on breadcrumbs "project" label on "commonPagesHeader" wizard
+ And wait load page
+ Then verify breadcrumbs "tab" label should be equal "Project monitoring" value
+ And hover "Project_Navigation_Toggler" component on "commonPagesHeader" wizard
+ Then click on "Project_Settings_Button" element on "commonPagesHeader" wizard
+ And hover "MLRun_Logo" component on "commonPagesHeader" wizard
+ Then "Pull_At_Runtime_Checkbox" element should be checked on "Project_Settings_General_Tab" wizard
+ Then uncheck "Pull_At_Runtime_Checkbox" element on "Project_Settings_General_Tab" wizard
+ And wait load page
+ Then verify if "Notification_Popup" popup dialog appears
+ Then "Notification_Pop_Up" element on "Notification_Popup" should contains "Data was edited successfully" value
+ Then verify "Notification_Pop_Up_Cross_Close_Button" element visibility on "Notification_Popup" wizard
+ Then click on "Notification_Pop_Up_Cross_Close_Button" element on "Notification_Popup" wizard
+ And wait load page
+ Then "Pull_At_Runtime_Checkbox" element should be unchecked on "Project_Settings_General_Tab" wizard
Then verify "Artifact_Path_Input" element visibility on "Project_Settings_General_Tab" wizard
Then type value " " to "Artifact_Path_Input" field on "Project_Settings_General_Tab" wizard
Then verify "Artifact_Path_Input" on "Project_Settings_General_Tab" wizard should display hover warning "Input_Hint"."Input_Field_Invalid"
@@ -77,9 +105,8 @@ Feature: Project Settings page
And click on "MLRun_Logo" element on "commonPagesHeader" wizard
And wait load page
Then type value "cat-vs-dog-classification" to "Search_Projects_Input" field on "Projects" wizard
- Then value in "labels" column with "dropdowns" in "Projects_Table" on "Projects" wizard should contains "c=d" in "Overlay"
- Then click on "Active_Projects_Button" element on "Projects" wizard
- Then value in "labels" column with "dropdowns" in "Projects_Table" on "Projects" wizard should contains "e=f" in "Overlay"
+ Then value in "labels_key" column with "attribute_list" in "Projects_Table" on "Projects" wizard should contains "a,c,e"
+ Then value in "labels_value" column with "attribute_list" in "Projects_Table" on "Projects" wizard should contains "b,d,f"
And click on row root with value "cat-vs-dog-classification" in "name" column in "Projects_Table" table on "Projects" wizard
And wait load page
And hover "Project_Navigation_Toggler" component on "commonPagesHeader" wizard
@@ -95,17 +122,15 @@ Feature: Project Settings page
Then verify "Source_URL_Input" on "Project_Settings_General_Tab" wizard should display hover warning "Input_Hint"."Input_Field_Invalid"
When add rows to "Labels_Table" table on "Project_Settings_General_Tab" wizard
| key_input | value_input |
- | a | b |
- | project_label_key | project_label_value |
| a12345 | b54321 |
+ | project_label_key | project_label_value |
+ | a | b |
Then type value "test" to "Source_URL_Input" field on "Project_Settings_General_Tab" wizard
And click on "MLRun_Logo" element on "commonPagesHeader" wizard
And wait load page
Then type value "cat-vs-dog-classification" to "Search_Projects_Input" field on "Projects" wizard
- Then value in "labels" column with "dropdowns" in "Projects_Table" on "Projects" wizard should contains "project_label_key=project_label_value" in "Overlay"
- Then click on "Active_Projects_Button" element on "Projects" wizard
- Then value in "labels" column with "dropdowns" in "Projects_Table" on "Projects" wizard should contains "a12345=b54321" in "Overlay"
- Then click on "Active_Projects_Button" element on "Projects" wizard
+ Then value in "labels_key" column with "attribute_list" in "Projects_Table" on "Projects" wizard should contains "a12345,project_label_key,a"
+ Then value in "labels_value" column with "attribute_list" in "Projects_Table" on "Projects" wizard should contains "b54321,project_label_value,b"
And click on row root with value "cat-vs-dog-classification" in "name" column in "Projects_Table" table on "Projects" wizard
And wait load page
And hover "Project_Navigation_Toggler" component on "commonPagesHeader" wizard
@@ -399,4 +424,4 @@ Feature: Project Settings page
And select "Secrets" tab in "Project_Settings_Tab_Selector" on "Project_Settings_General_Tab" wizard
And wait load page
Then verify redirection from "projects/default/settings/INVALID" to "projects/default/settings/general"
- Then verify redirection from "projects/default/INVALID/general" to "projects"
\ No newline at end of file
+ Then verify redirection from "projects/default/INVALID/general" to "projects"
diff --git a/tests/features/projectsPage.feature b/tests/features/projectsPage.feature
index 826eb1eb3..d31bc4999 100644
--- a/tests/features/projectsPage.feature
+++ b/tests/features/projectsPage.feature
@@ -105,6 +105,7 @@ Feature: Projects Page
Given open url
And wait load page
Then select "Delete" option in action menu on "Projects" wizard in "Projects_Table" table at row with "churn-project-admin" value in "name" column
+ And wait load page
Then verify if "Common_Popup" popup dialog appears
Then "Description" component on "Common_Popup" should be equal "Descriptions"."Delete_Project_Confirm_Message"
Then verify "Cancel_Button" element visibility on "Common_Popup" wizard
@@ -121,12 +122,13 @@ Feature: Projects Page
Then verify if "Create_New_Project" popup dialog appears
Then type into "Name_Input" on "Create_New_Project" popup dialog "empty-project" value
Then type into "Description_Input" on "Create_New_Project" popup dialog "empty project description" value
+ And click on "Add_Label_Button" element on "Create_New_Project" wizard
Then type value "empty" to "Labels_Key" field on "Create_New_Project" wizard
Then type value "project" to "Labels_Value" field on "Create_New_Project" wizard
When click on "Title" element on "Create_New_Project" wizard
And wait load page
Then click on "Create_Button" element on "Create_New_Project" wizard
- And wait load page
+ Then wait for 4 seconds
Then verify "Notification_Pop_Up" element visibility on "Notification_Popup" wizard
Then "Notification_Pop_Up" element on "Notification_Popup" should contains "Project \"empty-project\" was created successfully" value
And wait load page
@@ -134,6 +136,8 @@ Feature: Projects Page
Then click on "Notification_Pop_Up_Cross_Close_Button" element on "Notification_Popup" wizard
And wait load page
Then check "empty-project" value in "name" column in "Projects_Table" table on "Projects" wizard
+ Then type value "empty" to "Search_Projects_Input" field on "Projects" wizard
+ Then value in "name" column with "text" in "Projects_Table" on "Projects" wizard should contains "empty"
Then select "Delete" option in action menu on "Projects" wizard in "Projects_Table" table at row with "empty-project" value in "name" column
Then verify if "Common_Popup" popup dialog appears
Then "Description" component on "Common_Popup" should be equal "Descriptions"."Delete_Project_Confirm_Message"
@@ -384,13 +388,13 @@ Feature: Projects Page
Then verify "Total_Counter_Title" element visibility in "Monitoring_Jobs_Box" on "Projects" wizard
Then "Total_Counter_Title" element in "Monitoring_Jobs_Box" on "Projects" should contains "Jobs" value
Then verify "Total_Counter_Number" element visibility in "Monitoring_Jobs_Box" on "Projects" wizard
- Then "Total_Counter_Number" element in "Monitoring_Jobs_Box" on "Projects" should contains "19" value
+ Then "Total_Counter_Number" element in "Monitoring_Jobs_Box" on "Projects" should contains "20" value
Then verify "Counter_Running_Status_Number" element visibility in "Monitoring_Jobs_Box" on "Projects" wizard
Then verify "Counter_Running_Status_Icon" element visibility in "Monitoring_Jobs_Box" on "Projects" wizard
Then "Counter_Running_Status_Number" element in "Monitoring_Jobs_Box" on "Projects" should contains "16" value
Then verify "Counter_Failed_Status_Number" element visibility in "Monitoring_Jobs_Box" on "Projects" wizard
Then verify "Counter_Failed_Status_Icon" element visibility in "Monitoring_Jobs_Box" on "Projects" wizard
- Then "Counter_Failed_Status_Number" element in "Monitoring_Jobs_Box" on "Projects" should contains "2" value
+ Then "Counter_Failed_Status_Number" element in "Monitoring_Jobs_Box" on "Projects" should contains "3" value
Then verify "Counter_Completed_Status_Number" element visibility in "Monitoring_Jobs_Box" on "Projects" wizard
Then verify "Counter_Completed_Status_Icon" element visibility in "Monitoring_Jobs_Box" on "Projects" wizard
Then "Counter_Completed_Status_Number" element in "Monitoring_Jobs_Box" on "Projects" should contains "1" value
@@ -436,7 +440,7 @@ Feature: Projects Page
Then verify "Total_Counter_Title" element visibility in "Monitoring_Workflows_Box" on "Projects" wizard
Then "Total_Counter_Title" element in "Monitoring_Workflows_Box" on "Projects" should contains "Workflows" value
Then verify "Total_Counter_Number" element visibility in "Monitoring_Workflows_Box" on "Projects" wizard
- Then "Total_Counter_Number" element in "Monitoring_Workflows_Box" on "Projects" should contains "2" value
+ Then "Total_Counter_Number" element in "Monitoring_Workflows_Box" on "Projects" should contains "3" value
Then verify "Counter_Running_Status_Number" element visibility in "Monitoring_Workflows_Box" on "Projects" wizard
Then verify "Counter_Running_Status_Icon" element visibility in "Monitoring_Workflows_Box" on "Projects" wizard
Then "Counter_Running_Status_Number" element in "Monitoring_Workflows_Box" on "Projects" should contains "0" value
@@ -445,7 +449,7 @@ Feature: Projects Page
Then "Counter_Failed_Status_Number" element in "Monitoring_Workflows_Box" on "Projects" should contains "1" value
Then verify "Counter_Completed_Status_Number" element visibility in "Monitoring_Workflows_Box" on "Projects" wizard
Then verify "Counter_Completed_Status_Icon" element visibility in "Monitoring_Workflows_Box" on "Projects" wizard
- Then "Counter_Completed_Status_Number" element in "Monitoring_Workflows_Box" on "Projects" should contains "1" value
+ Then "Counter_Completed_Status_Number" element in "Monitoring_Workflows_Box" on "Projects" should contains "2" value
Then verify "See_All_Link" element visibility in "Monitoring_Workflows_Box" on "Projects" wizard
Then "See_All_Link" element in "Monitoring_Workflows_Box" on "Projects" should contains "See all" value
When click on "Counter_Running_Status_Number" element in "Monitoring_Workflows_Box" on "Projects" wizard
diff --git a/tests/features/step-definitions/table.steps.js b/tests/features/step-definitions/table.steps.js
index c27267706..55497c763 100644
--- a/tests/features/step-definitions/table.steps.js
+++ b/tests/features/step-definitions/table.steps.js
@@ -45,7 +45,8 @@ import {
getCellByIndexColumn,
getTableRows,
isContainsSubstringInColumnCells,
- isContainsSubstringInColumnAttributrCells,
+ isContainsSubstringInColumnAttributeCells,
+ isContainsSubstringInColumnAttributeListCells,
isContainsSubstringInColumnDropdownCells,
isContainsSubstringInColumnDropdownCellsOverlay,
isContainsSubstringInColumnTooltipCells,
@@ -1240,7 +1241,16 @@ Then(
'value in {string} column with {string} in {string} on {string} wizard should contains {string}',
async function (column, type, table, wizard, substring) {
if (type === 'attribute') {
- await isContainsSubstringInColumnAttributrCells(
+ await isContainsSubstringInColumnAttributeCells(
+ this.driver,
+ pageObjects[wizard][table],
+ column,
+ substring
+ )
+ }
+
+ if (type === 'attribute_list') {
+ await isContainsSubstringInColumnAttributeListCells(
this.driver,
pageObjects[wizard][table],
column,
diff --git a/tests/mockServer/data/funcs.json b/tests/mockServer/data/funcs.json
index 999d2be06..114e81727 100644
--- a/tests/mockServer/data/funcs.json
+++ b/tests/mockServer/data/funcs.json
@@ -30219,6 +30219,96 @@
},
"verbose": false,
"status": {}
- }
+ },
+ {
+ "spec": {
+ "priority_class_name": "igz-workload-medium",
+ "command": "python your_training_script.py",
+ "state_thresholds": {
+ "pending_scheduled": "1h",
+ "pending_not_scheduled": "-1",
+ "image_pull_backoff": "1h",
+ "executing": "24h"
+ },
+ "image": "your_image_with_horovod",
+ "description": "",
+ "replicas": 4,
+ "preemption_mode": "prevent",
+ "disable_auto_mount": true,
+ "build": {
+ "functionSourceCode": "IyBHZW5lcmF0ZWQgYnkgbnVjbGlvLmV4cG9ydC5OdWNsaW9FeHBvcnRlcgoKaW1wb3J0IG1scnVuCgojIENyZWF0ZSBvciBsb2FkIGFuIE1MUnVuIHByb2plY3QKcHJvamVjdCA9IG1scnVuLm5ld19wcm9qZWN0KCJob3Jvdm9kcHJvamVjdCIsIGNvbnRleHQ9Ii4vIiwgdXNlcl9wcm9qZWN0PVRydWUpCgojIERlZmluZSB0aGUgTVBJIGpvYiBmdW5jdGlvbgpmbiA9IG1scnVuLmNvZGVfdG9fZnVuY3Rpb24oCiAgICBuYW1lPSJob3Jvdm9kLXRyYWluIiwKICAgIGtpbmQ9Im1waWpvYiIsCiAgICBpbWFnZT0ieW91cl9pbWFnZV93aXRoX2hvcm92b2QiLAopCgojIFNldCBjb21tYW5kIGFuZCBvdGhlciBzcGVjcyBkaXJlY3RseQpmbi5zcGVjLmNvbW1hbmQgPSAicHl0aG9uIHlvdXJfdHJhaW5pbmdfc2NyaXB0LnB5Igpmbi5zcGVjLnJlcGxpY2FzID0gNAoKIyBSdW4gdGhlIGpvYgpydW4gPSBmbi5ydW4oKQoK",
+ "code_origin": "horovod-train.ipynb",
+ "origin_filename": "horovod-train.ipynb"
+ },
+ "default_handler": "",
+ "clean_pod_policy": "All",
+ "mpi_args": [
+ "-x",
+ "NCCL_SOCKET_NTHREADS=2",
+ "-x",
+ "NCCL_NSOCKS_PERTHREAD=8",
+ "-x",
+ "NCCL_MIN_NCHANNELS=4"
+ ],
+ "resources": {
+ "requests": {
+ "memory": "1Mi",
+ "cpu": "25m"
+ },
+ "limits": {
+ "memory": "20Gi",
+ "cpu": "2"
+ }
+ },
+ "env": [
+ {
+ "name": "V3IO_API",
+ "value": "v3io-webapi.default-tenant.svc:8081"
+ },
+ {
+ "name": "V3IO_USERNAME",
+ "value": "admin"
+ },
+ {
+ "name": "V3IO_ACCESS_KEY",
+ "valueFrom": {
+ "secretKeyRef": {
+ "key": "accessKey",
+ "name": "mlrun-auth-secrets.352e93afc5b83672fc9aaf3f20478d0b82f572eaddf9a8f4bf71c51d"
+ }
+ }
+ },
+ {
+ "name": "V3IO_FRAMESD",
+ "value": "framesd:8081"
+ },
+ {
+ "name": "MLRUN_AUTH_SESSION",
+ "valueFrom": {
+ "secretKeyRef": {
+ "key": "accessKey",
+ "name": "mlrun-auth-secrets.f9557c6c45ee4666c5c1550dafeb323ef82127208de229b8ea3ae472"
+ }
+ }
+ }
+ ],
+ "affinity": null,
+ "node_selector": {},
+ "tolerations": null
+ },
+ "kind": "mpijob",
+ "verbose": false,
+ "metadata": {
+ "tag": "latest",
+ "credentials": {
+ "access_key": "$ref:mlrun-auth-secrets.f9557c6c45ee4666c5c1550dafeb323ef82127208de229b8ea3ae472"
+ },
+ "name": "horovod-train",
+ "project": "sk-project-admin",
+ "hash": "c93f6c0bf4b3b633ef84c7c59093bd28b028e3a6",
+ "updated": "2024-10-08T14:06:44.563424+00:00"
+ },
+ "status": {}
+ }
]
}
diff --git a/tests/mockServer/data/run.json b/tests/mockServer/data/run.json
index d1563906e..264ef40ab 100644
--- a/tests/mockServer/data/run.json
+++ b/tests/mockServer/data/run.json
@@ -64564,6 +64564,51 @@
}
]
}
- }
+ },
+ {
+ "kind": "run",
+ "metadata": {
+ "name": "horovod-train",
+ "uid": "85c3a6bcc292462d89e4d65444d179b1",
+ "iteration": 0,
+ "project": "sk-project-admin",
+ "labels": {
+ "v3io_user": "admin",
+ "kind": "mpijob",
+ "owner": "admin",
+ "mlrun/client_version": "1.7.0-rc51",
+ "mlrun/client_python_version": "3.9.18"
+ },
+ "annotations": {}
+ },
+ "spec": {
+ "function": "sk-project-admin/horovod-train@c93f6c0bf4b3b633ef84c7c59093bd28b028e3a6",
+ "log_level": "info",
+ "parameters": {},
+ "handler": null,
+ "outputs": [],
+ "output_path": "v3io:///projects/sk-project-admin/artifacts",
+ "inputs": {},
+ "notifications": [],
+ "state_thresholds": {
+ "pending_scheduled": "1h",
+ "pending_not_scheduled": "-1",
+ "image_pull_backoff": "1h",
+ "executing": "24h"
+ },
+ "node_selector": {},
+ "hyperparams": {},
+ "hyper_param_options": {},
+ "data_stores": []
+ },
+ "status": {
+ "results": {},
+ "start_time": "2024-10-08T14:06:44.618450+00:00",
+ "last_update": "2024-10-08T14:34:12.621378+00:00",
+ "state": "aborted",
+ "abort_task_id": "74be3e06-56fb-4bc9-9ece-b77f7f818373",
+ "status_text": "aborted"
+ }
+ }
]
}
diff --git a/tests/mockServer/data/runs.json b/tests/mockServer/data/runs.json
index 16b13dfa8..455f25972 100644
--- a/tests/mockServer/data/runs.json
+++ b/tests/mockServer/data/runs.json
@@ -64451,6 +64451,51 @@
}
]
}
- }
+ },
+ {
+ "kind": "run",
+ "metadata": {
+ "name": "horovod-train",
+ "uid": "85c3a6bcc292462d89e4d65444d179b1",
+ "iteration": 0,
+ "project": "sk-project-admin",
+ "labels": {
+ "v3io_user": "admin",
+ "kind": "mpijob",
+ "owner": "admin",
+ "mlrun/client_version": "1.7.0-rc51",
+ "mlrun/client_python_version": "3.9.18"
+ },
+ "annotations": {}
+ },
+ "spec": {
+ "function": "sk-project-admin/horovod-train@c93f6c0bf4b3b633ef84c7c59093bd28b028e3a6",
+ "log_level": "info",
+ "parameters": {},
+ "handler": null,
+ "outputs": [],
+ "output_path": "v3io:///projects/sk-project-admin/artifacts",
+ "inputs": {},
+ "notifications": [],
+ "state_thresholds": {
+ "pending_scheduled": "1h",
+ "pending_not_scheduled": "-1",
+ "image_pull_backoff": "1h",
+ "executing": "24h"
+ },
+ "node_selector": {},
+ "hyperparams": {},
+ "hyper_param_options": {},
+ "data_stores": []
+ },
+ "status": {
+ "results": {},
+ "start_time": "2024-10-08T14:06:44.618450+00:00",
+ "last_update": "2024-10-08T14:34:12.621378+00:00",
+ "state": "aborted",
+ "abort_task_id": "74be3e06-56fb-4bc9-9ece-b77f7f818373",
+ "status_text": "aborted"
+ }
+ }
]
}
diff --git a/tests/mockServer/dateSynchronization.js b/tests/mockServer/dateSynchronization.js
index d04441c92..ff8f58db3 100644
--- a/tests/mockServer/dateSynchronization.js
+++ b/tests/mockServer/dateSynchronization.js
@@ -39,7 +39,7 @@ const nextHour = new Date(now.getTime() + (60 * 60 * 1000))
function updateRuns(runs) {
// update start_time та last_update
runs.runs = runs.runs.map(run => {
- if (['cf842616c89347c7bb7bca2c9e840a21', '76f48c8165da473bb4356ef7b196343f','f5751299ee21476e897dfd90d94c49c4', 'dad0fdf93bd949589f6b20f79fa47798', '9723e5a30b0e43b0b7cfda098445c446']
+ if (['cf842616c89347c7bb7bca2c9e840a21', '76f48c8165da473bb4356ef7b196343f','f5751299ee21476e897dfd90d94c49c4', 'dad0fdf93bd949589f6b20f79fa47798', '9723e5a30b0e43b0b7cfda098445c446', '85c3a6bcc292462d89e4d65444d179b1']
.includes(run.metadata.uid)) {
return { ...run, status: { ...run.status, start_time: formatDate(oneDayAgo), last_update: formatDate(oneDayAgo) }
diff --git a/tests/mockServer/mock.js b/tests/mockServer/mock.js
index 80c8eb13a..348990a22 100644
--- a/tests/mockServer/mock.js
+++ b/tests/mockServer/mock.js
@@ -459,28 +459,51 @@ function deleteProject(req, res) {
}
function deleteProjectV2(req, res) {
- const taskFunc = () => {
- return new Promise(resolve => {
- setTimeout(
- () => {
- deleteProjectHandler(req, res, true)
+ const isCascade = req.headers['x-mlrun-deletion-strategy'] === 'cascade'
+ const handleDeletion = () => {
+ const taskFunc = () => {
+ return new Promise((resolve) => {
+ setTimeout(() => {
+ deleteProjectHandler(req, res, true)
resolve()
- },
- random(5000, 10000)
- )
+ }, random(5000, 10000))
+ })
+ }
+
+ const task = createTask(null, {
+ taskFunc,
+ kind: `project.deletion.wrapper.${req.params.project}`,
})
+
+ res.status = 202
+ res.send(task)
}
- const task = createTask(null, {
- taskFunc,
- kind: `project.deletion.wrapper.${req.params.project}`
- })
- res.status = 202
+ if (isCascade) {
+ handleDeletion()
+ } else {
+ const collectedProject = projects.projects.filter(
+ (project) => project.metadata.name === req.params['project']
+ )
- res.send(task)
-}
+ const isEmpty = collectedProject.every(
+ (project) =>
+ (project.spec.functions && project.spec.functions.length > 0) ||
+ (project.spec.workflows && project.spec.workflows.length > 0) ||
+ (project.spec.artifacts && project.spec.artifacts.length > 0)
+ )
+ if (!isEmpty) {
+ handleDeletion()
+ } else {
+ res.status(412).send({
+ detail: `MLRunPreconditionFailedError('Project ${req.params.project} cannot be deleted since related resources found: artifacts')`,
+ })
+ }
+ }
+}
+
function patchProject(req, res) {
const project = projects.projects.find(project => project.metadata.name === req.params['project'])
@@ -1072,7 +1095,7 @@ function getProjectsFeaturesEntities(req, res) {
if (artifact === 'feature-vectors' && item.metadata.labels) {
return filterByLabels(item.metadata.labels, req.query['label'])
} else if ((artifact === 'features' || artifact === 'entities') && item.labels) {
- return filterByLabels(item.metadata.labels, req.query['label'])
+ return filterByLabels(item.labels, req.query['label'])
}
return false
From 0992450214ce22b3198b3da08f7bd7f318bac8e2 Mon Sep 17 00:00:00 2001
From: mariana-furyk <58301139+mariana-furyk@users.noreply.github.com>
Date: Mon, 28 Oct 2024 11:38:14 +0200
Subject: [PATCH 02/26] Impl [Workflows] Add retry option for workflows (#2843)
---
package.json | 2 +-
src/actions/workflow.js | 5 +-
src/api/workflow-api.js | 3 +
.../MonitorWorkflows/monitorWorkflows.util.js | 12 +-
src/elements/WorkflowsTable/WorkflowsTable.js | 173 +++++++++++-------
5 files changed, 123 insertions(+), 72 deletions(-)
diff --git a/package.json b/package.json
index b2d4eb6f4..40b7f09af 100644
--- a/package.json
+++ b/package.json
@@ -24,7 +24,7 @@
"final-form-arrays": "^3.1.0",
"fs-extra": "^10.0.0",
"identity-obj-proxy": "^3.0.0",
- "iguazio.dashboard-react-controls": "2.2.3",
+ "iguazio.dashboard-react-controls": "2.2.4",
"is-wsl": "^1.1.0",
"js-base64": "^2.5.2",
"js-yaml": "^4.1.0",
diff --git a/src/actions/workflow.js b/src/actions/workflow.js
index df9428ee2..f7529b21b 100644
--- a/src/actions/workflow.js
+++ b/src/actions/workflow.js
@@ -73,7 +73,7 @@ const workflowActions = {
dispatch(workflowActions.fetchWorkflowsBegin())
config?.ui?.setRequestErrorMessage?.('')
- const errorHandler = (error) => {
+ const errorHandler = error => {
dispatch(workflowActions.fetchWorkflowsFailure(error))
largeResponseCatchHandler(
error,
@@ -134,6 +134,9 @@ const workflowActions = {
type: FETCH_WORKFLOWS_FAILURE,
payload: error
}),
+ rerunWorkflow: (project, workflowId) => () => {
+ return workflowApi.rerunWorkflow(project, workflowId)
+ },
resetWorkflow: () => ({
type: RESET_WORKFLOW
})
diff --git a/src/api/workflow-api.js b/src/api/workflow-api.js
index 18418b4af..8153c8c56 100644
--- a/src/api/workflow-api.js
+++ b/src/api/workflow-api.js
@@ -108,6 +108,9 @@ const workflowsApi = {
}
return mainHttpClient.get(`/projects/${project}/pipelines`, newConfig)
+ },
+ rerunWorkflow: (project, workflowId) => {
+ return mainHttpClient.post(`projects/${project}/pipelines/${workflowId}/retry`)
}
}
diff --git a/src/components/Jobs/MonitorWorkflows/monitorWorkflows.util.js b/src/components/Jobs/MonitorWorkflows/monitorWorkflows.util.js
index 091e85ac9..4b5d272f5 100644
--- a/src/components/Jobs/MonitorWorkflows/monitorWorkflows.util.js
+++ b/src/components/Jobs/MonitorWorkflows/monitorWorkflows.util.js
@@ -57,6 +57,7 @@ import { ReactComponent as Run } from 'igz-controls/images/run.svg'
import { ReactComponent as Cancel } from 'igz-controls/images/close.svg'
import { ReactComponent as Yaml } from 'igz-controls/images/yaml.svg'
import { ReactComponent as Delete } from 'igz-controls/images/delete.svg'
+import { ReactComponent as Rerun } from 'igz-controls/images/rerun.svg'
export const generateFilters = () => [
{
@@ -102,7 +103,8 @@ export const generateActionsMenu = (
abortable_function_kinds,
handleConfirmAbortJob,
handleConfirmDeleteJob,
- toggleConvertedYaml
+ toggleConvertedYaml,
+ handleRerun
) => {
if (job?.uid) {
const jobKindIsAbortable = isJobKindAbortable(job, abortable_function_kinds)
@@ -155,12 +157,20 @@ export const generateActionsMenu = (
]
]
} else {
+ const runningStates = ['running', 'pending']
+
return [
[
{
label: 'View YAML',
icon: ,
onClick: toggleConvertedYaml
+ },
+ {
+ hidden: runningStates.includes(job?.state?.value),
+ icon: ,
+ label: 'Retry',
+ onClick: () => handleRerun(job)
}
]
]
diff --git a/src/elements/WorkflowsTable/WorkflowsTable.js b/src/elements/WorkflowsTable/WorkflowsTable.js
index 9ef603bd4..8e731b884 100644
--- a/src/elements/WorkflowsTable/WorkflowsTable.js
+++ b/src/elements/WorkflowsTable/WorkflowsTable.js
@@ -185,7 +185,14 @@ const WorkflowsTable = React.forwardRef(
replace: true
})
})
- }, [backLink, dispatch, navigate, params.projectName, params.workflowId, params.workflowProjectName])
+ }, [
+ backLink,
+ dispatch,
+ navigate,
+ params.projectName,
+ params.workflowId,
+ params.workflowProjectName
+ ])
const handlePollAbortingJob = useCallback(
(jobRun, refresh) => {
@@ -233,60 +240,62 @@ const WorkflowsTable = React.forwardRef(
if (workflowsStore.activeWorkflow?.data) {
const workflow = { ...workflowsStore.activeWorkflow.data }
- return find(workflow.graph, workflowItem =>
- workflowItem.run_type === 'run' && workflowItem.run_uid === params.jobId)
+ return find(
+ workflow.graph,
+ workflowItem => workflowItem.run_type === 'run' && workflowItem.run_uid === params.jobId
+ )
}
}, [params.jobId, workflowsStore.activeWorkflow.data])
- const getPipelineError = useCallback(isErrorState => {
- return isErrorState &&
- workflowsStore.activeWorkflow?.data?.run?.error &&
- workflowsStore.activeWorkflow.data.run.error !== 'None' ? {
- title: 'Pipeline error - ',
- message: workflowsStore.activeWorkflow.data.run.error
- } : {}
- }, [workflowsStore.activeWorkflow.data])
-
- const fetchRun = useCallback(
- () => {
- return dispatch(
- jobsActions.fetchJob(params.workflowProjectName || params.projectName, params.jobId)
- )
- .then(job => {
- const selectedJob = findSelectedWorkflowJob()
- const graphJobState = selectedJob?.phase?.toLowerCase()
- const isErrorState = [FAILED_STATE, ERROR_STATE].includes(graphJobState)
- const customJobState = isErrorState ? graphJobState : ''
-
- return modifyAndSelectRun(parseJob(
- job,
- MONITOR_WORKFLOWS_TAB,
- customJobState,
- getPipelineError(isErrorState)
- ), fetchRun)
- })
- .catch(() =>
- navigate(backLink, {
- replace: true
- })
- )
- .finally(() => {
- fetchJobFunctionsPromiseRef.current = null
- })
+ const getPipelineError = useCallback(
+ isErrorState => {
+ return isErrorState &&
+ workflowsStore.activeWorkflow?.data?.run?.error &&
+ workflowsStore.activeWorkflow.data.run.error !== 'None'
+ ? {
+ title: 'Pipeline error - ',
+ message: workflowsStore.activeWorkflow.data.run.error
+ }
+ : {}
},
- [
- backLink,
- dispatch,
- findSelectedWorkflowJob,
- modifyAndSelectRun,
- navigate,
- params.jobId,
- params.projectName,
- params.workflowProjectName,
- getPipelineError
- ]
+ [workflowsStore.activeWorkflow.data]
)
+ const fetchRun = useCallback(() => {
+ return dispatch(
+ jobsActions.fetchJob(params.workflowProjectName || params.projectName, params.jobId)
+ )
+ .then(job => {
+ const selectedJob = findSelectedWorkflowJob()
+ const graphJobState = selectedJob?.phase?.toLowerCase()
+ const isErrorState = [FAILED_STATE, ERROR_STATE].includes(graphJobState)
+ const customJobState = isErrorState ? graphJobState : ''
+
+ return modifyAndSelectRun(
+ parseJob(job, MONITOR_WORKFLOWS_TAB, customJobState, getPipelineError(isErrorState)),
+ fetchRun
+ )
+ })
+ .catch(() =>
+ navigate(backLink, {
+ replace: true
+ })
+ )
+ .finally(() => {
+ fetchJobFunctionsPromiseRef.current = null
+ })
+ }, [
+ backLink,
+ dispatch,
+ findSelectedWorkflowJob,
+ modifyAndSelectRun,
+ navigate,
+ params.jobId,
+ params.projectName,
+ params.workflowProjectName,
+ getPipelineError
+ ])
+
const setJobStatusAborting = useCallback(
task => {
setSelectedJob(state => ({
@@ -328,7 +337,7 @@ const WorkflowsTable = React.forwardRef(
Are you sure you want to abort the job "{job.name}"?
{isJobKindLocal(job) &&
- 'This is a local run. You can abort the run, though the actual process will continue.'}
+ 'This is a local run. You can abort the run, though the actual process will continue.'}
@@ -151,4 +111,4 @@ DetailsStatistics.propTypes = {
selectedItem: PropTypes.shape({}).isRequired
}
-export default DetailsStatistics
+export default memo(DetailsStatistics)
diff --git a/src/components/DetailsStatistics/DetailsStatisticsTableRow.js b/src/components/DetailsStatistics/DetailsStatisticsTableRow.js
new file mode 100644
index 000000000..a44aef870
--- /dev/null
+++ b/src/components/DetailsStatistics/DetailsStatisticsTableRow.js
@@ -0,0 +1,109 @@
+/*
+Copyright 2019 Iguazio Systems Ltd.
+
+Licensed under the Apache License, Version 2.0 (the "License") with
+an addition restriction as set forth herein. You may not use this
+file except in compliance with the License. You may obtain a copy of
+the License at http://www.apache.org/licenses/LICENSE-2.0.
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+implied. See the License for the specific language governing
+permissions and limitations under the License.
+
+In addition, you may not use the software for any purposes that are
+illegal under applicable law, and the grant of the foregoing license
+under the Apache 2.0 license is conditioned upon your compliance with
+such restriction.
+*/
+import React, { memo } from 'react'
+import PropTypes from 'prop-types'
+import classnames from 'classnames'
+
+import MlChart from '../../common/Chart/MlChart'
+import { Tooltip, TextTooltipTemplate } from 'igz-controls/components'
+
+import './detailsStatistics.scss'
+import colors from 'igz-controls/scss/colors.scss'
+
+const DetailsStatisticsTableRow = ({ statisticsItem, headers, chartConfig }) => {
+ return (
+
+ )
+}
+
+export default ModelEndpointsFilters
diff --git a/src/components/ModelsPage/ModelEndpoints/modelEndpoints.util.js b/src/components/ModelsPage/ModelEndpoints/modelEndpoints.util.js
index 98360ea62..8ac7985c8 100644
--- a/src/components/ModelsPage/ModelEndpoints/modelEndpoints.util.js
+++ b/src/components/ModelsPage/ModelEndpoints/modelEndpoints.util.js
@@ -19,20 +19,14 @@ such restriction.
*/
import { isEmpty } from 'lodash'
-import { LABELS_FILTER, MODEL_ENDPOINTS_TAB, MODELS_PAGE, SORT_BY } from '../../../constants'
+import { LABELS_FILTER, MODEL_ENDPOINTS_TAB, MODELS_PAGE } from '../../../constants'
import { TERTIARY_BUTTON } from 'igz-controls/constants'
-import { filterSelectOptions } from '../../FilterMenu/filterMenu.settings'
import { showErrorNotification } from '../../../utils/notifications.util'
import { fetchModelEndpoint } from '../../../reducers/artifactsReducer'
-export const filters = [
- { type: LABELS_FILTER, label: 'Labels:' },
- {
- type: SORT_BY,
- label: 'Sort By:',
- options: [{ label: 'Function', id: 'function' }, ...filterSelectOptions.sortBy]
- }
-]
+export const filtersConfig = {
+ [LABELS_FILTER]: { label: 'Labels:' }
+}
const infoHeaders = [
{ label: 'UID', id: 'uid' },
diff --git a/src/components/ModelsPage/RealTimePipelines/RealTimePipelines.js b/src/components/ModelsPage/RealTimePipelines/RealTimePipelines.js
index 8a46ffc8a..63fd79812 100644
--- a/src/components/ModelsPage/RealTimePipelines/RealTimePipelines.js
+++ b/src/components/ModelsPage/RealTimePipelines/RealTimePipelines.js
@@ -23,13 +23,13 @@ import { useNavigate, useParams } from 'react-router-dom'
import classnames from 'classnames'
import { isNil } from 'lodash'
-import FilterMenu from '../../FilterMenu/FilterMenu'
import Loader from '../../../common/Loader/Loader'
import ModelsPageTabs from '../ModelsPageTabs/ModelsPageTabs'
import NoData from '../../../common/NoData/NoData'
import Pipeline from '../../Pipeline/Pipeline'
import RealTimePipelinesTableRow from '../../../elements/RealTimePipelinesTableRow/RealTimePipelinesTableRow'
import Table from '../../Table/Table'
+import ActionBar from '../../ActionBar/ActionBar'
import {
GROUP_BY_NAME,
@@ -39,7 +39,7 @@ import {
} from '../../../constants'
import createRealTimePipelinesContent from '../../../utils/createRealTimePipelinesContent'
import { fetchArtifactsFunctions, removePipelines } from '../../../reducers/artifactsReducer'
-import { filters, generatePageData } from './realTimePipelines.util'
+import { filtersConfig, generatePageData } from './realTimePipelines.util'
import { getNoDataMessage } from '../../../utils/getNoDataMessage'
import { isRowRendered, useVirtualization } from '../../../hooks/useVirtualization.hook'
import { setFilters } from '../../../reducers/filtersReducer'
@@ -167,10 +167,11 @@ const RealTimePipelines = () => {
- {
({
page: MODELS_PAGE,
diff --git a/src/reducers/filtersReducer.js b/src/reducers/filtersReducer.js
index 17e7d700d..2c1c336fc 100644
--- a/src/reducers/filtersReducer.js
+++ b/src/reducers/filtersReducer.js
@@ -40,9 +40,11 @@ import {
JOBS_MONITORING_WORKFLOWS_TAB,
LABELS_FILTER,
MODELS_FILTERS,
+ MODEL_ENDPOINTS_TAB,
MODEL_TYPE,
NAME_FILTER,
PROJECT_FILTER,
+ REAL_TIME_PIPELINES_TAB,
SHOW_ITERATIONS,
SHOW_UNTAGGED_FILTER,
STATUS_FILTER,
@@ -119,11 +121,11 @@ const initialState = {
[FUNCTION_FILTERS]: {
values: {
[NAME_FILTER]: '',
- [DATES_FILTER]: getDatePickerFilterValue(datePickerPastOptions, PAST_WEEK_DATE_OPTION),
+ [DATES_FILTER]: getDatePickerFilterValue(datePickerPastOptions, PAST_WEEK_DATE_OPTION)
},
initialValues: {
[NAME_FILTER]: '',
- [DATES_FILTER]: getDatePickerFilterValue(datePickerPastOptions, PAST_WEEK_DATE_OPTION),
+ [DATES_FILTER]: getDatePickerFilterValue(datePickerPastOptions, PAST_WEEK_DATE_OPTION)
}
},
[CONSUMER_GROUPS_FILTER]: {
@@ -141,6 +143,14 @@ const initialState = {
initialValues: {
[NAME_FILTER]: ''
}
+ },
+ [REAL_TIME_PIPELINES_TAB]: {
+ values: {
+ [NAME_FILTER]: ''
+ },
+ initialValues: {
+ [NAME_FILTER]: ''
+ }
}
},
[FILTER_MENU_MODAL]: {
@@ -221,6 +231,14 @@ const initialState = {
[PROJECT_FILTER]: '',
[TYPE_FILTER]: FILTER_ALL_ITEMS
}
+ },
+ [MODEL_ENDPOINTS_TAB]: {
+ initialValues: {
+ [LABELS_FILTER]: ''
+ },
+ values: {
+ [LABELS_FILTER]: ''
+ }
}
}
}
diff --git a/tests/features/common-tools/common-consts.js b/tests/features/common-tools/common-consts.js
index cb2920e34..678c8118b 100644
--- a/tests/features/common-tools/common-consts.js
+++ b/tests/features/common-tools/common-consts.js
@@ -333,6 +333,10 @@ module.exports = {
Secrets_Hint:
'These secrets are automatically available to all jobs belonging to this project that are not executed locally. See Secrets'
},
+ Common_Tooltips:{
+ FilterBy_Button: 'Filter',
+ Refresh_Button: 'Refresh'
+ },
Input_Hint: {
Artifact_Names_Unique: 'Artifact names in the same project must be unique',
Dataset_Names_Unique: 'Dataset names in the same project must be unique',
diff --git a/tests/features/common/actions/common.action.js b/tests/features/common/actions/common.action.js
index c771a4bad..a02adec3d 100644
--- a/tests/features/common/actions/common.action.js
+++ b/tests/features/common/actions/common.action.js
@@ -255,6 +255,19 @@ const action = {
await driver.executeScript('arguments[0].scrollIntoView()', element)
await driver.sleep(250)
},
+ checkComponentHintTextWithHover:async function (driver, component, hintComponent, text) {
+ const hintButton = await driver.findElement(component)
+ const coordinates = await hintButton.getRect()
+ const actions = driver.actions({ async: true })
+ await actions
+ .move({ x: parseInt(coordinates.x), y: parseInt(coordinates.y) })
+ .perform()
+ await driver.sleep(250)
+ const hint = await driver.findElement(hintComponent)
+ const hintText = await hint.getText()
+
+ expect(hintText).equal(text)
+ },
scrollToWebElement
}
diff --git a/tests/features/common/page-objects/models.po.js b/tests/features/common/page-objects/models.po.js
index c0db4178a..a8df23653 100644
--- a/tests/features/common/page-objects/models.po.js
+++ b/tests/features/common/page-objects/models.po.js
@@ -246,17 +246,20 @@ const realTimePipelinesGraph = {
// Common components
const tableRefreshButton = By.css('.content__action-bar-wrapper .action-bar [data-testid="refresh"]')
+const tableNameFilterInput = inputGroup(
+ generateInputGroup(
+ '.content .content__action-bar-wrapper .action-bar .name-filter .form-field-input',
+ true,
+ false,
+ '.form-field__warning svg'
+ )
+)
module.exports = {
modelsTab: {
Delete_Artifact_Popup: By.css('[data-testid="pop-up-dialog"]'),
Models_Tab_Selector: commonTable(tabSelector),
- Table_Name_Filter_Input: inputGroup(
- generateInputGroup(
- '.content .content__action-bar-wrapper .action-bar .name-filter .form-field-input',
- true
- )
- ),
+ Table_Name_Filter_Input: tableNameFilterInput,
Table_Refresh_Button: By.css('.content__action-bar-wrapper .action-bar__actions [data-testid="refresh"]'),
Models_Table: commonTable(modelsTable),
Overlay: By.css('#overlay_container .chip-block-hidden_visible'),
@@ -268,34 +271,18 @@ module.exports = {
},
modelEndpoints: {
Table_Refresh_Button: tableRefreshButton,
- Table_Label_Filter_Input: inputGroup(
- generateInputGroup(
- '.content .content__action-bar-wrapper .input-wrapper:nth-of-type(1)',
- true,
- false,
- true
- )
- ),
- Table_Sort_By_Filter: dropdownComponent(
- generateDropdownGroup(
- '.content__action-bar-wrapper .filters .filter-column:nth-of-type(2) .select',
- '.select__header',
- '.select__body .select__item',
- '.data-ellipsis .data-ellipsis'
- )
- ),
Model_Endpoints_Table: commonTable(modelsEndpointTable),
- Overlay: By.css('#overlay_container .chip-block-hidden_visible')
+ Overlay: By.css('#overlay_container .chip-block-hidden_visible'),
+ Table_FilterBy_Button: By.css(
+ '[data-testid="filter-menu-btn-tooltip-wrapper"]'
+ ),
+ Column_Name_Header: By.css('[data-testid="name"]'),
+ Sort_By_Name: By.css('[data-testid="name"].sortable-header-cell_active svg'),
+ Sort_By_Function: By.css('[data-testid="function"].sortable-header-cell_active svg'),
+ Column_Function_Header: By.css('[data-testid="function"]')
},
realTimePipelinesTab: {
- Table_Name_Filter_Input: inputGroup(
- generateInputGroup(
- '.content .content__action-bar-wrapper .filters .input-wrapper',
- true,
- false,
- true
- )
- ),
+ Table_Name_Filter_Input: tableNameFilterInput,
Table_Refresh_Button: tableRefreshButton,
Real_Time_Pipelines_Table: commonTable(realTimePipelinesTable),
Real_Time_Pipelines_Graph: graph(realTimePipelinesGraph)
diff --git a/tests/features/common/page-objects/project-settings.po.js b/tests/features/common/page-objects/project-settings.po.js
index a39df6565..87c1f0166 100644
--- a/tests/features/common/page-objects/project-settings.po.js
+++ b/tests/features/common/page-objects/project-settings.po.js
@@ -151,7 +151,7 @@ module.exports = {
'.form-key-value-table .form-table__row_active .form-table__cell_1:nth-of-type(1)',
true,
false,
- '.form-field__warning'
+ '.form-field__warning svg'
)
),
Parameters_Table_Value_Input: inputGroup(
@@ -159,7 +159,7 @@ module.exports = {
'.form-key-value-table .form-table__row_active .form-table__cell_1:nth-of-type(2)',
true,
false,
- '.form-field__warning'
+ '.form-field__warning svg'
)
),
Parameters_Table_Add_Row_Button: By.css(
diff --git a/tests/features/models.feature b/tests/features/models.feature
index f31cf4278..9815bba5c 100644
--- a/tests/features/models.feature
+++ b/tests/features/models.feature
@@ -69,9 +69,24 @@ Feature: Models Page
And select "Model Endpoints" tab in "Models_Tab_Selector" on "Models" wizard
And wait load page
Then verify "Model Endpoints" tab is active in "Models_Tab_Selector" on "Models" wizard
- Then verify "Table_Label_Filter_Input" element visibility on "Model_Endpoints" wizard
- Then verify "Table_Sort_By_Filter" element visibility on "Model_Endpoints" wizard
+ Then verify "Table_FilterBy_Button" element visibility on "Model_Endpoints" wizard
+ Then verify "Table_FilterBy_Button" element on "Model_Endpoints" wizard should display hover tooltip "Common_Tooltips"."FilterBy_Button"
+ Then click on "Table_FilterBy_Button" element on "Model_Endpoints" wizard
+ Then verify "Table_Label_Filter_Input" element visibility on "FilterBy_Popup" wizard
+ Then verify "Apply_Button" element visibility on "FilterBy_Popup" wizard
+ Then verify "Apply_Button" element on "FilterBy_Popup" wizard is disabled
+ Then verify "Clear_Button" element visibility on "FilterBy_Popup" wizard
+ Then verify "Clear_Button" element on "FilterBy_Popup" wizard is disabled
Then verify "Table_Refresh_Button" element visibility on "Model_Endpoints" wizard
+ Then verify "Table_Refresh_Button" element on "Model_Endpoints" wizard should display hover tooltip "Common_Tooltips"."Refresh_Button"
+ Then verify "Sort_By_Function" element visibility on "Model_Endpoints" wizard
+ Then verify "Sort_By_Name" element not exists on "Model_Endpoints" wizard
+ Then click on "Column_Name_Header" element on "Model_Endpoints" wizard
+ Then verify "Sort_By_Name" element visibility on "Model_Endpoints" wizard
+ Then verify "Sort_By_Function" element not exists on "Model_Endpoints" wizard
+ Then click on "Column_Function_Header" element on "Model_Endpoints" wizard
+ Then verify "Sort_By_Function" element visibility on "Model_Endpoints" wizard
+ Then verify "Sort_By_Name" element not exists on "Model_Endpoints" wizard
Then verify "Model_Endpoints_Table" element visibility on "Model_Endpoints" wizard
@MLM
@@ -93,6 +108,7 @@ Feature: Models Page
Then verify "Real-Time Pipelines" tab is active in "Models_Tab_Selector" on "Models" wizard
Then verify "Table_Name_Filter_Input" element visibility on "Real_Time_Pipelines" wizard
Then verify "Table_Refresh_Button" element visibility on "Real_Time_Pipelines" wizard
+ Then verify "Table_Refresh_Button" element on "Real_Time_Pipelines" wizard should display hover tooltip "Common_Tooltips"."Refresh_Button"
Then verify "Real_Time_Pipelines_Table" element visibility on "Real_Time_Pipelines" wizard
@MLM
@@ -168,6 +184,11 @@ Feature: Models Page
Then click on "Table_Refresh_Button" element on "Real_Time_Pipelines" wizard
And wait load page
Then value in "name" column with "text" in "Real_Time_Pipelines_Table" on "Real_Time_Pipelines" wizard should contains "churn-server"
+ Then click on cell with row index 1 in "name" column in "Real_Time_Pipelines_Table" table on "Real_Time_Pipelines" wizard
+ And wait load page
+ Then verify "Real_Time_Pipelines_Graph" element visibility on "Real_Time_Pipelines" wizard
+ When click on node with index 2 in "Real_Time_Pipelines_Graph" graph on "Real_Time_Pipelines" wizard
+ Then verify "Header" element visibility on "Real_Time_Pipeline_Pane" wizard
@MLM
@passive
@@ -211,17 +232,22 @@ Feature: Models Page
And select "Model Endpoints" tab in "Models_Tab_Selector" on "Models" wizard
And wait load page
Then verify "Model Endpoints" tab is active in "Models_Tab_Selector" on "Models" wizard
- Then verify "Table_Label_Filter_Input" element visibility on "Model_Endpoints" wizard
- Then type value "my-key" to "Table_Label_Filter_Input" field on "Model_Endpoints" wizard
- Then click on "Table_Refresh_Button" element on "Model_Endpoints" wizard
+ Then click on "Table_FilterBy_Button" element on "Model_Endpoints" wizard
+ Then verify "Table_Label_Filter_Input" element visibility on "FilterBy_Popup" wizard
+ Then type value "my-key" to "Table_Label_Filter_Input" field on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
And wait load page
Then value in "labels" column with "dropdowns" in "Model_Endpoints_Table" on "Model_Endpoints" wizard should contains "my-key=my-value" in "Overlay"
- Then type value "my-key=my-value" to "Table_Label_Filter_Input" field on "Model_Endpoints" wizard
- Then click on "Table_Refresh_Button" element on "Model_Endpoints" wizard
+ Then click on "Table_FilterBy_Button" element on "Model_Endpoints" wizard
+ Then verify "Table_Label_Filter_Input" element visibility on "FilterBy_Popup" wizard
+ Then type value "my-key=my-value" to "Table_Label_Filter_Input" field on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
And wait load page
Then value in "labels" column with "dropdowns" in "Model_Endpoints_Table" on "Model_Endpoints" wizard should contains "my-key=my-value" in "Overlay"
- Then type value "MY-KEY" to "Table_Label_Filter_Input" field on "Model_Endpoints" wizard
- Then click on "Table_Refresh_Button" element on "Model_Endpoints" wizard
+ Then click on "Table_FilterBy_Button" element on "Model_Endpoints" wizard
+ Then verify "Table_Label_Filter_Input" element visibility on "FilterBy_Popup" wizard
+ Then type value "MY-KEY" to "Table_Label_Filter_Input" field on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
And wait load page
And verify "No_Data_Message" element visibility on "commonPagesHeader" wizard
diff --git a/tests/features/projectsPage.feature b/tests/features/projectsPage.feature
index 01c559b36..8da52e3c1 100644
--- a/tests/features/projectsPage.feature
+++ b/tests/features/projectsPage.feature
@@ -523,7 +523,6 @@ Feature: Projects Page
@MLPr
@mlrunUnhealthyTest
@passive
- @uniqueTag
@smoke
Scenario: MLPr019 - Check Mlrun unhealthy popup
Given open url
diff --git a/tests/features/step-definitions/steps.js b/tests/features/step-definitions/steps.js
index 865e8d24a..a9f5212b9 100644
--- a/tests/features/step-definitions/steps.js
+++ b/tests/features/step-definitions/steps.js
@@ -49,7 +49,8 @@ import {
verifyElementNotActive,
generatePath,
determineFileAccess,
- verifyClassDisabled
+ verifyClassDisabled,
+ checkComponentHintTextWithHover
} from '../common/actions/common.action'
import {
checkTableColumnValues,
@@ -1034,6 +1035,18 @@ Then(
}
)
+Then(
+ 'verify {string} element on {string} wizard should display hover tooltip {string}.{string}',
+ async function(inputField, wizard, constStorage, constValue) {
+ await checkComponentHintTextWithHover(
+ this.driver,
+ pageObjects[wizard][inputField],
+ pageObjects['commonPagesHeader']['Common_Tolltip'],
+ pageObjectsConsts[constStorage][constValue]
+ )
+ }
+)
+
Then(
'verify {string} on {string} wizard should display {string}.{string} in {string}',
async function(inputField, wizard, constStorage, constValue, commonTipType) {
From 6119eff2a7f38366458164b22aa3a5572297558b Mon Sep 17 00:00:00 2001
From: EZheln <36635708+EZheln@users.noreply.github.com>
Date: Sat, 9 Nov 2024 03:33:25 +0200
Subject: [PATCH 18/26] QA Sprint 172 done (#2868)
- updated test on Job and Workflows, Jobs Monitoring pages (Retry option) due to ML-8031
- updated test on Feature Store page (Cancel button) due to ML-8085
---
tests/features/MLFunction.feature | 2 +-
tests/features/artifacts.feature | 2 +-
tests/features/common-tools/common-consts.js | 5 +--
.../common/page-objects/feature-store.po.js | 2 +-
.../page-objects/interactive-popup.po.js | 3 +-
.../common/page-objects/jobs-monitoring.po.js | 9 ++++++
tests/features/datasets.feature | 11 ++++---
tests/features/jobsAndWorkflows.feature | 32 ++++++++++++++++++-
tests/features/jobsMonitoring.feature | 17 ++++++++++
tests/features/projectMonitoring.feature | 4 +--
10 files changed, 73 insertions(+), 14 deletions(-)
diff --git a/tests/features/MLFunction.feature b/tests/features/MLFunction.feature
index f87e862a6..7d949eae9 100644
--- a/tests/features/MLFunction.feature
+++ b/tests/features/MLFunction.feature
@@ -1079,7 +1079,7 @@ Feature: ML Functions
Then verify "Cross_Cancel_Button" element visibility on "View_YAML" wizard
Then verify "YAML_Modal_Container" element visibility on "View_YAML" wizard
Then click on "Cross_Cancel_Button" element on "View_YAML" wizard
- Then click on cell with row index 9 in "expand_btn" column in "Functions_Table" table on "ML_Functions" wizard
+ Then click on cell with row index 8 in "expand_btn" column in "Functions_Table" table on "ML_Functions" wizard
And wait load page
Then select "View YAML" option in action menu on "ML_Functions" wizard in "Functions_Table" table at row with "Nov 23, 2021, 11:31:51 AM" value in "name" column
Then verify if "View_YAML" popup dialog appears
diff --git a/tests/features/artifacts.feature b/tests/features/artifacts.feature
index 60c8094c0..c8d5548b2 100644
--- a/tests/features/artifacts.feature
+++ b/tests/features/artifacts.feature
@@ -756,7 +756,7 @@ Feature: Artifacts Page
Then verify "Add_Tag_Popup" element visibility on "Add_Tag_Popup" wizard
Then verify "Close_Button" element visibility on "Add_Tag_Popup" wizard
Then verify "Title" element visibility on "Add_Tag_Popup" wizard
- # Then "Title" element on "Add_Tag_Popup" should contains "Add a tag" value - bug 'Add A Tag'
+ Then "Title" element on "Add_Tag_Popup" should contains "Add A Tag" value
Then verify "Input_Label" element visibility on "Add_Tag_Popup" wizard
Then "Input_Label" element on "Add_Tag_Popup" should contains "Artifact tag *" value
Then verify "Tag_Input" element visibility on "Add_Tag_Popup" wizard
diff --git a/tests/features/common-tools/common-consts.js b/tests/features/common-tools/common-consts.js
index 678c8118b..7c702bc00 100644
--- a/tests/features/common-tools/common-consts.js
+++ b/tests/features/common-tools/common-consts.js
@@ -485,10 +485,11 @@ module.exports = {
Job_Action_Menu_Options: ['Batch re-run', 'Monitoring', 'View YAML', 'Delete'],
Job_Overview_Action_Menu_Options: ['View YAML', 'Batch re-run', 'Delete'],
Running_Job_Action_Menu_Options: ['Monitoring', 'Abort', 'View YAML'],
- Workflows_Action_Menu_Options: ['View YAML'],
+ Workflows_Action_Menu_Options: ['View YAML', 'Retry'],
Workflows_Info_Pane_Action_Menu_Options: ['Batch re-run', 'Monitoring', 'View YAML', 'Delete'],
Pending_Job_Action_Menu_Options: ['Batch re-run', 'Monitoring', 'Abort', 'View YAML'],
- Schedule_Action_Menu_Options: ['Run now', 'Edit', 'Delete', 'View YAML']
+ Schedule_Action_Menu_Options: ['Run now', 'Edit', 'Delete', 'View YAML'],
+ Workflows_Unsuccessful_Run_Message: 'Workflow did not run successfully\nRETRY'
},
Jobs_Monitor_Tab_Info_Pane: {
Tab_List: ['Overview', 'Inputs', 'Artifacts', 'Results', 'Logs', 'Pods'],
diff --git a/tests/features/common/page-objects/feature-store.po.js b/tests/features/common/page-objects/feature-store.po.js
index 305f5d8ce..834efa1c5 100644
--- a/tests/features/common/page-objects/feature-store.po.js
+++ b/tests/features/common/page-objects/feature-store.po.js
@@ -450,7 +450,7 @@ module.exports = {
Table_Refresh_Button: tableRefreshButton,
Add_To_Feature_Vector_Table: commonTable(addToFeatureVectorTable),
Add_Button: By.css('.features-panel__buttons .btn-primary'),
- Cancel_Button: By.css('.features-panel__buttons .btn-label'),
+ Cancel_Button: By.css('.features-panel__buttons .btn-tertiary'),
Features_Panel_Title: labelComponent(
generateLabelGroup('.add-to-feature-vector .features-panel__header', false, true)
),
diff --git a/tests/features/common/page-objects/interactive-popup.po.js b/tests/features/common/page-objects/interactive-popup.po.js
index d06cad250..43f6cba86 100644
--- a/tests/features/common/page-objects/interactive-popup.po.js
+++ b/tests/features/common/page-objects/interactive-popup.po.js
@@ -1702,7 +1702,8 @@ module.exports = {
notificationPopUp: {
Title: By.css('#overlay_container .notification__body'),
Notification_Pop_Up: By.css('#overlay_container .notification__body'),
- Notification_Pop_Up_Cross_Close_Button: By.css('#overlay_container .notification__button-close')
+ Notification_Pop_Up_Cross_Close_Button: By.css('#overlay_container .notification__button-close'),
+ Retry_Button: By.css('#overlay_container .notification__body .notification__body__button-retry')
},
addTagPopup: {
Add_Tag_Popup: By.css('[data-testid="modal"]'),
diff --git a/tests/features/common/page-objects/jobs-monitoring.po.js b/tests/features/common/page-objects/jobs-monitoring.po.js
index 9a64b7faf..6cb7a1992 100644
--- a/tests/features/common/page-objects/jobs-monitoring.po.js
+++ b/tests/features/common/page-objects/jobs-monitoring.po.js
@@ -72,6 +72,15 @@ const overallTable = {
row: {
root: '.table-row',
fields: {
+ status: {
+ componentType: labelComponent,
+ structure: generateLabelGroup(
+ '.table-body__cell:nth-of-type(1) .status',
+ 'i',
+ true,
+ '.tooltip .tooltip__text span'
+ )
+ },
name: '[data-testid="name"] a .link',
project_name: '[data-testid="projectName"] .data-ellipsis',
datetime:
diff --git a/tests/features/datasets.feature b/tests/features/datasets.feature
index 5aff63985..27d6b13fb 100644
--- a/tests/features/datasets.feature
+++ b/tests/features/datasets.feature
@@ -1238,16 +1238,16 @@ Feature: Datasets Page
And wait load page
And hover "MLRun_Logo" component on "commonPagesHeader" wizard
And wait load page
- Then verify that 16 row elements are displayed in "Datasets_Table" on "Datasets" wizard
+ Then verify that 17 row elements are displayed in "Datasets_Table" on "Datasets" wizard
Then check "new_dataset_10" value in "name" column in "Datasets_Table" table on "Datasets" wizard
Then check "new_dataset_24" value in "name" column in "Datasets_Table" table on "Datasets" wizard
Then check "test-regressor_cox-test-summary" value in "name" column in "Datasets_Table" table on "Datasets" wizard
- Then check "survival-curves_coxhazard-summary" value not in "name" column in "Datasets_Table" table on "Datasets" wizard
+ Then check "survival-curves_coxhazard-summary" value in "name" column in "Datasets_Table" table on "Datasets" wizard
Then check "iris_gen_iris_dataset" value not in "name" column in "Datasets_Table" table on "Datasets" wizard
Then check "data_clean_cleaned-data" value not in "name" column in "Datasets_Table" table on "Datasets" wizard
When scroll to the element with "test-regressor_cox-test-summary" value in "name" column in "Datasets_Table" table on "Datasets" wizard
And wait load page
- Then verify that 17 row elements are displayed in "Datasets_Table" on "Datasets" wizard
+ Then verify that 18 row elements are displayed in "Datasets_Table" on "Datasets" wizard
Then check "test-regressor_cox-test-summary" value in "name" column in "Datasets_Table" table on "Datasets" wizard
Then check "iris_gen_iris_dataset" value in "name" column in "Datasets_Table" table on "Datasets" wizard
Then check "new_dataset_10" value not in "name" column in "Datasets_Table" table on "Datasets" wizard
@@ -1276,10 +1276,11 @@ Feature: Datasets Page
Then select "All" option in "Table_Tree_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard
Then click on "Apply_Button" element on "FilterBy_Popup" wizard
And wait load page
- Then verify that 16 row elements are displayed in "Datasets_Table" on "Datasets" wizard
+ Then verify that 17 row elements are displayed in "Datasets_Table" on "Datasets" wizard
Then check "new_dataset_24" value in "name" column in "Datasets_Table" table on "Datasets" wizard
Then check "test-regressor_cox-test-summary" value in "name" column in "Datasets_Table" table on "Datasets" wizard
- Then check "survival-curves_coxhazard-summary" value not in "name" column in "Datasets_Table" table on "Datasets" wizard
+ Then check "survival-curves_coxhazard-summary" value in "name" column in "Datasets_Table" table on "Datasets" wizard
+ Then check "iris_gen_iris_dataset" value not in "name" column in "Datasets_Table" table on "Datasets" wizard
Then click on cell with value "test-regressor_cox-test-summary" in "name" column in "Datasets_Table" table on "Datasets" wizard
And wait load page
Then check "new_dataset_10" value not in "name" column in "Datasets_Table" table on "Datasets" wizard
diff --git a/tests/features/jobsAndWorkflows.feature b/tests/features/jobsAndWorkflows.feature
index a78245d86..d11875025 100644
--- a/tests/features/jobsAndWorkflows.feature
+++ b/tests/features/jobsAndWorkflows.feature
@@ -2256,4 +2256,34 @@ Feature: Jobs and workflows
Then verify "Parameters_From_File_Input" element in "Parameters_Accordion" on "Modal_Wizard_Form" wizard is enabled by class name
Then verify "Parameters_Headers" on "Modal_Wizard_Form" wizard should contains "Modal_Wizard_Form"."Parameters_Table_Header"
Then verify "Hyper_Toggle_Switch" element not exists in "Parameters_Accordion" on "Modal_Wizard_Form" wizard
-
\ No newline at end of file
+
+ @MLJW
+ @passive
+ @smoke
+ Scenario: MLJW087 - Check Retry option in action menu on Workflows Monitor tab
+ Given open url
+ And click on row root with value "churn-project-admin" in "name" column in "Projects_Table" table on "Projects" wizard
+ And wait load page
+ And hover "Project_Navigation_Toggler" component on "commonPagesHeader" wizard
+ And click on cell with value "Jobs and workflows" in "link" column in "General_Info_Quick_Links" table on "commonPagesHeader" wizard
+ And hover "MLRun_Logo" component on "commonPagesHeader" wizard
+ And wait load page
+ And select "Monitor Workflows" tab in "Jobs_Tab_Selector" on "Jobs_Monitor_Tab" wizard
+ And wait load page
+ Then verify "Monitor Workflows" tab is active in "Jobs_Tab_Selector" on "Jobs_Monitor_Tab" wizard
+ Then verify options in action menu on "Workflows_Monitor_Tab" wizard in "Workflows_Monitor_Table" table with "Completed" value in "status" column should contains "Jobs_And_Workflows"."Workflows_Action_Menu_Options"
+ Then select "Retry" option in action menu on "Workflows_Monitor_Tab" wizard in "Workflows_Monitor_Table" table at row with "kfpipeline 2021-07-06 11-16-28" value in "name" column
+ And wait load page
+ Then verify if "Notification_Popup" popup dialog appears
+ Then verify "Notification_Pop_Up" element visibility on "Notification_Popup" wizard
+ Then "Notification_Pop_Up" element on "Notification_Popup" should contains "Workflow ran successfully." value
+ Then verify "Notification_Pop_Up_Cross_Close_Button" element visibility on "Notification_Popup" wizard
+ Then click on "Notification_Pop_Up_Cross_Close_Button" element on "Notification_Popup" wizard
+ Then verify if "Notification_Popup" popup dialog appears
+ Then verify "Notification_Pop_Up" element visibility on "Notification_Popup" wizard
+ Then "Notification_Pop_Up" component on "Notification_Popup" should contains "Jobs_And_Workflows"."Workflows_Unsuccessful_Run_Message"
+ Then verify "Retry_Button" element visibility on "Notification_Popup" wizard
+ Then "Retry_Button" element on "Notification_Popup" should contains "RETRY" value
+ Then verify "Notification_Pop_Up_Cross_Close_Button" element visibility on "Notification_Popup" wizard
+ Then click on "Notification_Pop_Up_Cross_Close_Button" element on "Notification_Popup" wizard
+
\ No newline at end of file
diff --git a/tests/features/jobsMonitoring.feature b/tests/features/jobsMonitoring.feature
index 18bf87dc2..239b0168f 100644
--- a/tests/features/jobsMonitoring.feature
+++ b/tests/features/jobsMonitoring.feature
@@ -596,6 +596,23 @@ Feature: Jobs Monitoring Page
Then verify if "View_YAML" popup dialog appears
Then verify "Cross_Cancel_Button" element visibility on "View_YAML" wizard
Then verify "YAML_Modal_Container" element visibility on "View_YAML" wizard
+ Then click on "Cross_Cancel_Button" element on "View_YAML" wizard
+ And wait load page
+ Then verify options in action menu on "Jobs_Monitoring_Workflows_Tab" wizard in "Workflows_Table" table with "Completed" value in "status" column should contains "Jobs_And_Workflows"."Workflows_Action_Menu_Options"
+ Then select "Retry" option in action menu on "Jobs_Monitoring_Workflows_Tab" wizard in "Workflows_Table" table at row with "kfpipeline 2021-07-06 11-16-28" value in "name" column
+ And wait load page
+ Then verify if "Notification_Popup" popup dialog appears
+ Then verify "Notification_Pop_Up" element visibility on "Notification_Popup" wizard
+ Then "Notification_Pop_Up" element on "Notification_Popup" should contains "Workflow ran successfully." value
+ Then verify "Notification_Pop_Up_Cross_Close_Button" element visibility on "Notification_Popup" wizard
+ Then click on "Notification_Pop_Up_Cross_Close_Button" element on "Notification_Popup" wizard
+ Then verify if "Notification_Popup" popup dialog appears
+ Then verify "Notification_Pop_Up" element visibility on "Notification_Popup" wizard
+ Then "Notification_Pop_Up" component on "Notification_Popup" should contains "Jobs_And_Workflows"."Workflows_Unsuccessful_Run_Message"
+ Then verify "Retry_Button" element visibility on "Notification_Popup" wizard
+ Then "Retry_Button" element on "Notification_Popup" should contains "RETRY" value
+ Then verify "Notification_Pop_Up_Cross_Close_Button" element visibility on "Notification_Popup" wizard
+ Then click on "Notification_Pop_Up_Cross_Close_Button" element on "Notification_Popup" wizard
@MLJM
@smoke
diff --git a/tests/features/projectMonitoring.feature b/tests/features/projectMonitoring.feature
index 57214dcf1..29f42f741 100644
--- a/tests/features/projectMonitoring.feature
+++ b/tests/features/projectMonitoring.feature
@@ -203,9 +203,9 @@ Feature: Project Monitoring Page
Then verify "New_File_Name_Input" on "Register_Model_Popup" wizard should display options "Input_Hint"."Artifact_Name_Hint"
When select "V3IO" option in "Path_Scheme_Combobox" combobox on "Target_Path" accordion on "Register_Model_Popup" wizard
When type value " " to "Path_Scheme_Combobox" field on "Target_Path" on "Register_Model_Popup" wizard
- Then verify "Path_Scheme_Combobox" element in "Target_Path" on "Register_Model_Popup" wizard should display warning "Input_Hint"."V3IO_Path_Hint"
+ Then verify "Path_Scheme_Combobox" element in "Target_Path" on "Register_Model_Popup" wizard should display hover warning "Input_Hint"."V3IO_Path_Hint"
Then type value " " to "New_File_Description_Input" field on "Register_Model_Popup" wizard
- Then verify "New_File_Description_Input" on "Register_Model_Popup" wizard should display warning "Input_Hint"."Input_Field_Invalid"
+ Then verify "New_File_Description_Input" on "Register_Model_Popup" wizard should display hover warning "Input_Hint"."Input_Field_Invalid"
When add rows to "Labels_Table" table on "Register_Model_Popup" wizard
| key_input | value_input |
| key1 | value1 |
From 0dd987ce5d5016a3eedc0fe67a69896dc6466f55 Mon Sep 17 00:00:00 2001
From: Taras-Hlukhovetskyi
<155433425+Taras-Hlukhovetskyi@users.noreply.github.com>
Date: Sat, 9 Nov 2024 03:37:08 +0200
Subject: [PATCH 19/26] Impl [UI] Revamp Feature store page (#2840)
---------
Co-authored-by: Olena Zhelnytska
---
.../AddToFeatureVectorFilters.js | 75 +++++++
.../AddToFeatureVectorPage.js | 51 ++++-
.../AddToFeatureVectorView.js | 39 ++--
.../addToFeatureVector.scss | 5 +
.../addToFeatureVectorPage.util.js | 14 +-
src/components/Datasets/Datasets.js | 2 +-
.../FeatureStore/FeatureSets/FeatureSets.js | 64 ++++--
.../FeatureSets/FeatureSetsView.js | 47 +++--
.../FeatureSets/featureSets.util.js | 10 +-
src/components/FeatureStore/FeatureStore.js | 43 ----
.../FeatureStore/FeatureStoreFilters.js | 58 +++++
.../FeatureStorePageTabs.js | 52 +++++
.../FeatureVectors/FeatureVectors.js | 85 +++++---
.../FeatureVectors/FeatureVectorsView.js | 48 +++--
.../FeatureVectors/featureVectors.util.js | 10 +-
.../FeatureStore/Features/Features.js | 31 ++-
.../FeatureStore/Features/FeaturesView.js | 49 +++--
.../FeatureStore/Features/features.util.js | 10 +-
.../FeatureStore/featureStore.util.js | 1 +
src/components/Files/Files.js | 2 +-
.../FilterMenuModal/FilterMenuModal.js | 27 +--
src/components/JobWizard/JobWizard.js | 2 +-
src/components/ModelsPage/Models/Models.js | 2 +-
src/constants.js | 1 +
.../FeaturesTablePanel/FeaturesTablePanel.js | 13 +-
src/hooks/useInitialTableFetch.hook.js | 58 +++--
src/reducers/filtersReducer.js | 87 +++++++-
.../common/page-objects/feature-store.po.js | 14 +-
.../page-objects/interactive-popup.po.js | 23 +-
tests/features/featureStore.feature | 198 +++++++++++++-----
tests/features/projectMonitoring.feature | 18 +-
tests/features/quickActions.feature | 33 ++-
32 files changed, 877 insertions(+), 295 deletions(-)
create mode 100644 src/components/AddToFeatureVectorPage/AddToFeatureVectorFilters.js
create mode 100644 src/components/AddToFeatureVectorPage/addToFeatureVector.scss
create mode 100644 src/components/FeatureStore/FeatureStoreFilters.js
create mode 100644 src/components/FeatureStore/FeatureStorePageTabs/FeatureStorePageTabs.js
diff --git a/src/components/AddToFeatureVectorPage/AddToFeatureVectorFilters.js b/src/components/AddToFeatureVectorPage/AddToFeatureVectorFilters.js
new file mode 100644
index 000000000..7184b45ba
--- /dev/null
+++ b/src/components/AddToFeatureVectorPage/AddToFeatureVectorFilters.js
@@ -0,0 +1,75 @@
+/*
+Copyright 2019 Iguazio Systems Ltd.
+
+Licensed under the Apache License, Version 2.0 (the "License") with
+an addition restriction as set forth herein. You may not use this
+file except in compliance with the License. You may obtain a copy of
+the License at http://www.apache.org/licenses/LICENSE-2.0.
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+implied. See the License for the specific language governing
+permissions and limitations under the License.
+
+In addition, you may not use the software for any purposes that are
+illegal under applicable law, and the grant of the foregoing license
+under the Apache 2.0 license is conditioned upon your compliance with
+such restriction.
+*/
+import React from 'react'
+import { useForm } from 'react-final-form'
+import { useSelector } from 'react-redux'
+import { useParams } from 'react-router-dom'
+import PropTypes from 'prop-types'
+
+import { FormInput, FormOnChange } from 'igz-controls/components'
+import FormTagFilter from '../../common/FormTagFilter/FormTagFilter'
+import { FormSelect } from 'iguazio.dashboard-react-controls/dist/components'
+
+import { ENTITIES_FILTER, LABELS_FILTER, PROJECT_FILTER, TAG_FILTER } from '../../constants'
+import { generateProjectsList } from '../../utils/projects'
+
+const AddToFeatureVectorFilters = ({ content }) => {
+ const form = useForm()
+ const projectStore = useSelector(store => store.projectStore)
+ const params = useParams()
+
+ const handleInputChange = (value, inputName) => {
+ form.change(inputName, value || '')
+ }
+
+ return (
+
{featureStore.features.loading || featureStore.entities.loading ? null : features.length ===
0 ? (
@@ -86,7 +98,7 @@ const FeaturesView = React.forwardRef(
actionsMenu={actionsMenu}
hideActionsMenu={tableStore.isTablePanelOpen}
pageData={pageData}
- retryRequest={handleRefresh}
+ retryRequest={handleRefreshWithStoreFilters}
tab={FEATURES_TAB}
tableClassName="features-table"
tableHeaders={tableContent[0]?.content ?? []}
@@ -126,6 +138,7 @@ FeaturesView.propTypes = {
getPopUpTemplate: PropTypes.func.isRequired,
handleExpandRow: PropTypes.func.isRequired,
handleRefresh: PropTypes.func.isRequired,
+ handleRefreshWithStoreFilters: PropTypes.func.isRequired,
pageData: PropTypes.object.isRequired,
requestErrorMessage: PropTypes.string.isRequired,
selectedRowData: PropTypes.object.isRequired,
diff --git a/src/components/FeatureStore/Features/features.util.js b/src/components/FeatureStore/Features/features.util.js
index c013cd874..067132c6e 100644
--- a/src/components/FeatureStore/Features/features.util.js
+++ b/src/components/FeatureStore/Features/features.util.js
@@ -22,11 +22,11 @@ import { LABELS_FILTER, LARGE_REQUEST_CANCELED, NAME_FILTER, TAG_FILTER } from '
import { showLargeResponsePopUp } from '../../../httpClient'
import { largeResponseCatchHandler } from '../../../utils/largeResponseCatchHandler'
-export const featuresFilters = [
- { type: TAG_FILTER, label: 'Version Tag:' },
- { type: NAME_FILTER, label: 'Name:' },
- { type: LABELS_FILTER, label: 'Labels:' }
-]
+export const filtersConfig = {
+ [TAG_FILTER]: { label: 'Version Tag:' },
+ [NAME_FILTER]: { label: 'Name:' },
+ [LABELS_FILTER]: { label: 'Labels:' }
+}
export const handleFeaturesResponse = (
features,
diff --git a/src/components/FeatureStore/featureStore.util.js b/src/components/FeatureStore/featureStore.util.js
index ce39bbeec..21f8b69cb 100644
--- a/src/components/FeatureStore/featureStore.util.js
+++ b/src/components/FeatureStore/featureStore.util.js
@@ -36,6 +36,7 @@ import { truncateUid } from '../../utils'
export const createFeatureSetTitle = 'Create set'
export const createFeatureVectorTitle = 'Create vector'
+export const addToFeatureVectorTitle = 'Add to feature vector'
export const tabs = [
{ id: FEATURE_SETS_TAB, label: 'Feature sets' },
diff --git a/src/components/Files/Files.js b/src/components/Files/Files.js
index c594453c3..26e13d4bf 100644
--- a/src/components/Files/Files.js
+++ b/src/components/Files/Files.js
@@ -312,7 +312,7 @@ const Files = () => {
createRowData: rowItem => createFilesRowData(rowItem, params.projectName, frontendSpec),
fetchData,
fetchTags,
- filterMenuName: FILES_FILTERS,
+ filterModalName: FILES_FILTERS,
filters: filesFilters,
setExpandedRowsData: setSelectedRowData,
sortExpandedRowsDataBy: 'updated'
diff --git a/src/components/FilterMenuModal/FilterMenuModal.js b/src/components/FilterMenuModal/FilterMenuModal.js
index e583ab93b..7ae4f258a 100644
--- a/src/components/FilterMenuModal/FilterMenuModal.js
+++ b/src/components/FilterMenuModal/FilterMenuModal.js
@@ -86,14 +86,18 @@ const FilterMenuModal = ({
}, [dispatch, filtersData, filterMenuName, values])
useEffect(() => {
- if (!isEqual(initialValues, values)) {
+ if (!isEqual(formRef.current?.getState().values, values)) {
formRef.current?.batch(() => {
for (const filterName in values) {
formRef.current?.change(filterName, values[filterName])
}
})
}
- }, [initialValues, values])
+ }, [values])
+
+ useEffect(() => {
+ formRef.current.reset(initialValues)
+ }, [initialValues])
const hideFiltersWizard = useCallback(event => {
if (
@@ -123,17 +127,16 @@ const FilterMenuModal = ({
const ref = formRef.current
return () => {
- ref.restart(initialValues)
- dispatch(resetModalFilter(filterMenuName))
+ dispatch(
+ resetModalFilter({
+ name: filterMenuName,
+ resetModalFilterCallback: newInitialValues => {
+ if (newInitialValues) ref.restart(newInitialValues)
+ }
+ })
+ )
}
- }, [
- params.pageTab,
- params.projectName,
- restartFormTrigger,
- dispatch,
- initialValues,
- filterMenuName
- ])
+ }, [params.pageTab, params.projectName, restartFormTrigger, dispatch, filterMenuName])
const getFilterCounter = formState => {
const initialValues = applyChanges ? filtersData?.initialValues : formState.initialValues
diff --git a/src/components/JobWizard/JobWizard.js b/src/components/JobWizard/JobWizard.js
index ebd5cacef..793298ff0 100644
--- a/src/components/JobWizard/JobWizard.js
+++ b/src/components/JobWizard/JobWizard.js
@@ -129,7 +129,7 @@ const JobWizard = ({
if (showSchedule) {
setShowSchedule(false)
}
- dispatch(resetModalFilter(JOB_WIZARD_FILTERS))
+ dispatch(resetModalFilter({ name: JOB_WIZARD_FILTERS }))
removeJobFunction()
onResolve()
onWizardClose && onWizardClose()
diff --git a/src/components/ModelsPage/Models/Models.js b/src/components/ModelsPage/Models/Models.js
index d4868e41b..97f361414 100644
--- a/src/components/ModelsPage/Models/Models.js
+++ b/src/components/ModelsPage/Models/Models.js
@@ -373,7 +373,7 @@ const Models = ({ fetchModelFeatureVector }) => {
createRowData: rowItem => createModelsRowData(rowItem, params.projectName, frontendSpec),
fetchData,
fetchTags,
- filterMenuName: MODELS_FILTERS,
+ filterModalName: MODELS_FILTERS,
filters: modelsFilters,
setExpandedRowsData: setSelectedRowData,
sortExpandedRowsDataBy: 'updated'
diff --git a/src/constants.js b/src/constants.js
index 688f78437..805f0718e 100644
--- a/src/constants.js
+++ b/src/constants.js
@@ -97,6 +97,7 @@ export const REAL_TIME_PIPELINES_TAB = 'real-time-pipelines'
export const PIPELINE_SUB_PAGE = 'pipeline'
export const FEATURE_STORE_PAGE = 'FEATURE-STORE'
+export const FEATURE_STORE_PAGE_PATH = 'feature-store'
export const FEATURES_TAB = 'features'
export const FEATURE_SETS_TAB = 'feature-sets'
export const FEATURE_VECTORS_TAB = 'feature-vectors'
diff --git a/src/elements/FeaturesTablePanel/FeaturesTablePanel.js b/src/elements/FeaturesTablePanel/FeaturesTablePanel.js
index f2cfd5346..c00bfb1cc 100644
--- a/src/elements/FeaturesTablePanel/FeaturesTablePanel.js
+++ b/src/elements/FeaturesTablePanel/FeaturesTablePanel.js
@@ -38,7 +38,7 @@ import { showErrorNotification } from '../../utils/notifications.util'
const FeaturesTablePanel = ({
createNewFeatureVector,
- filtersStore,
+ projectName = '',
handleCancel = null,
onSubmit = null,
updateFeatureVectorData
@@ -51,13 +51,13 @@ const FeaturesTablePanel = ({
if (tableStore.features.isNewFeatureVector) {
dispatch(
updateCurrentProjectName(
- filtersStore.project || tableStore.features.featureVector.metadata.project
+ projectName || tableStore.features.featureVector.metadata.project
)
)
}
}, [
dispatch,
- filtersStore.project,
+ projectName,
tableStore.features.featureVector.metadata.project,
tableStore.features.isNewFeatureVector
])
@@ -174,12 +174,11 @@ const FeaturesTablePanel = ({
FeaturesTablePanel.propTypes = {
handleCancel: PropTypes.func,
- onSubmit: PropTypes.func
+ onSubmit: PropTypes.func,
+ projectName: PropTypes.string
}
export default connect(
- filtersStore => ({
- ...filtersStore
- }),
+ null,
{ ...featureStoreActions }
)(FeaturesTablePanel)
diff --git a/src/hooks/useInitialTableFetch.hook.js b/src/hooks/useInitialTableFetch.hook.js
index 28d50464e..aeb841c30 100644
--- a/src/hooks/useInitialTableFetch.hook.js
+++ b/src/hooks/useInitialTableFetch.hook.js
@@ -20,7 +20,7 @@ such restriction.
import { useEffect, useLayoutEffect, useMemo, useRef } from 'react'
import { useParams } from 'react-router-dom'
import { useDispatch } from 'react-redux'
-import { debounce } from 'lodash'
+import { debounce, has, isEmpty } from 'lodash'
import {
GROUP_BY_FILTER,
@@ -30,15 +30,17 @@ import {
TAG_FILTER,
TAG_FILTER_ALL_ITEMS
} from '../constants'
-import { setFilters, setModalFiltersValues } from '../reducers/filtersReducer'
+import { setFilters, setFiltersValues, setModalFiltersValues } from '../reducers/filtersReducer'
import { expandRowByName } from '../utils/tableRows.util'
export const useInitialTableFetch = ({
createRowData,
- filters,
fetchData,
fetchTags,
- filterMenuName,
+ filterModalName,
+ filterName,
+ filters,
+ filtersConfig,
setExpandedRowsData,
setInitialFilters,
sortExpandedRowsDataBy
@@ -96,27 +98,45 @@ export const useInitialTableFetch = ({
if (setInitialFilters) {
setInitialFilters()
} else {
- if (params.name) {
- dispatch(
- setFilters({
- [NAME_FILTER]: params.name,
- [ITERATIONS_FILTER]: '',
- [TAG_FILTER]: TAG_FILTER_ALL_ITEMS
- })
- )
-
- if (filterMenuName) {
+ if (params.name) {
+ if (filterName) {
+ dispatch(
+ setFiltersValues({
+ name: filterName,
+ value: { [NAME_FILTER]: params.name }
+ })
+ )
+ } else {
+ // todo remove when all filters will be changed to new components
dispatch(
- setModalFiltersValues({
- name: filterMenuName,
- value: { [ITERATIONS_FILTER]: '', [TAG_FILTER]: TAG_FILTER_ALL_ITEMS }
+ setFilters({
+ [NAME_FILTER]: params.name
})
)
}
+
+ if (filterModalName) {
+ const value = { [ITERATIONS_FILTER]: '', [TAG_FILTER]: TAG_FILTER_ALL_ITEMS }
+
+ if (filtersConfig) {
+ for (const filterName of Object.keys(value)) {
+ if (!has(filtersConfig, filterName)) delete value[filterName]
+ }
+ }
+
+ if (!isEmpty(value)) {
+ dispatch(
+ setModalFiltersValues({
+ name: filterModalName,
+ value: value
+ })
+ )
+ }
+ }
}
}
}
- }, [dispatch, filterMenuName, params.name, setInitialFilters])
+ }, [dispatch, filterModalName, filterName, filtersConfig, params.name, setInitialFilters])
useEffect(() => {
sendInitialRequest({
@@ -133,7 +153,7 @@ export const useInitialTableFetch = ({
dispatch,
fetchData,
fetchTags,
- filterMenuName,
+ filterModalName,
filters,
params.name,
sendInitialRequest,
diff --git a/src/reducers/filtersReducer.js b/src/reducers/filtersReducer.js
index 2c1c336fc..8a395f4ad 100644
--- a/src/reducers/filtersReducer.js
+++ b/src/reducers/filtersReducer.js
@@ -21,6 +21,7 @@ import { createAsyncThunk, createSlice } from '@reduxjs/toolkit'
import { set } from 'lodash'
import {
+ ADD_TO_FEATURE_VECTOR_TAB,
ARTIFACT_OTHER_TYPE,
CONSUMER_GROUPS_FILTER,
CONSUMER_GROUP_FILTER,
@@ -28,6 +29,10 @@ import {
DATASET_TYPE,
DATES_FILTER,
DATE_FILTER_ANY_TIME,
+ ENTITIES_FILTER,
+ FEATURES_TAB,
+ FEATURE_SETS_TAB,
+ FEATURE_VECTORS_TAB,
FILES_FILTERS,
FILTER_ALL_ITEMS,
FILTER_MENU,
@@ -144,6 +149,38 @@ const initialState = {
[NAME_FILTER]: ''
}
},
+ [FEATURE_SETS_TAB]: {
+ values: {
+ [NAME_FILTER]: ''
+ },
+ initialValues: {
+ [NAME_FILTER]: ''
+ }
+ },
+ [FEATURES_TAB]: {
+ values: {
+ [NAME_FILTER]: ''
+ },
+ initialValues: {
+ [NAME_FILTER]: ''
+ }
+ },
+ [FEATURE_VECTORS_TAB]: {
+ values: {
+ [NAME_FILTER]: ''
+ },
+ initialValues: {
+ [NAME_FILTER]: ''
+ }
+ },
+ [ADD_TO_FEATURE_VECTOR_TAB]: {
+ values: {
+ [NAME_FILTER]: ''
+ },
+ initialValues: {
+ [NAME_FILTER]: ''
+ }
+ },
[REAL_TIME_PIPELINES_TAB]: {
values: {
[NAME_FILTER]: ''
@@ -232,6 +269,50 @@ const initialState = {
[TYPE_FILTER]: FILTER_ALL_ITEMS
}
},
+ [FEATURE_SETS_TAB]: {
+ initialValues: {
+ [TAG_FILTER]: TAG_FILTER_LATEST,
+ [LABELS_FILTER]: ''
+ },
+ values: {
+ [TAG_FILTER]: TAG_FILTER_LATEST,
+ [LABELS_FILTER]: ''
+ }
+ },
+ [FEATURES_TAB]: {
+ initialValues: {
+ [TAG_FILTER]: TAG_FILTER_LATEST,
+ [LABELS_FILTER]: ''
+ },
+ values: {
+ [TAG_FILTER]: TAG_FILTER_LATEST,
+ [LABELS_FILTER]: ''
+ }
+ },
+ [FEATURE_VECTORS_TAB]: {
+ initialValues: {
+ [TAG_FILTER]: TAG_FILTER_LATEST,
+ [LABELS_FILTER]: ''
+ },
+ values: {
+ [TAG_FILTER]: TAG_FILTER_LATEST,
+ [LABELS_FILTER]: ''
+ }
+ },
+ [ADD_TO_FEATURE_VECTOR_TAB]: {
+ initialValues: {
+ [TAG_FILTER]: TAG_FILTER_LATEST,
+ [ENTITIES_FILTER]: '',
+ [LABELS_FILTER]: '',
+ [PROJECT_FILTER]: ''
+ },
+ values: {
+ [TAG_FILTER]: TAG_FILTER_LATEST,
+ [ENTITIES_FILTER]: '',
+ [LABELS_FILTER]: '',
+ [PROJECT_FILTER]: ''
+ }
+ },
[MODEL_ENDPOINTS_TAB]: {
initialValues: {
[LABELS_FILTER]: ''
@@ -275,7 +356,11 @@ const filtersSlice = createSlice({
state[FILTER_MENU][action.payload] = initialState[FILTER_MENU][action.payload]
},
resetModalFilter(state, action) {
- state[FILTER_MENU_MODAL][action.payload] = initialState[FILTER_MENU_MODAL][action.payload]
+ state[FILTER_MENU_MODAL][action.payload.name] =
+ initialState[FILTER_MENU_MODAL][action.payload.name]
+ action.payload.resetModalFilterCallback?.(
+ initialState[FILTER_MENU_MODAL][action.payload.name]?.initialValues
+ )
},
setFilters(state, action) {
for (let filterProp in action.payload) {
diff --git a/tests/features/common/page-objects/feature-store.po.js b/tests/features/common/page-objects/feature-store.po.js
index 834efa1c5..845e27d45 100644
--- a/tests/features/common/page-objects/feature-store.po.js
+++ b/tests/features/common/page-objects/feature-store.po.js
@@ -340,14 +340,14 @@ const datasetsTable = {
// Common components
const featureStoreTabSelector = commonTable(tabSelector)
const tableRefreshButton = By.css('.content__action-bar-wrapper [data-testid="refresh"]')
-const tableFilterByButton = By.css('.content .content__action-bar-wrapper .action-bar__filters .filters-button button')
-const pageHeaderButton = By.css('.content__header .page-actions-container button')
+const tableFilterByButton = By.css('[data-testid="filter-menu-btn"]')
+const pageHeaderButton = By.css('[data-testid="btn"]')
const commonNameFilterInput = inputGroup(
generateInputGroup(
- '.content .content__action-bar-wrapper .filters .filter-column:nth-of-type(2) .input-wrapper',
+ '[data-testid="name-form-field-input"]',
true,
false,
- true
+ '.form-field__warning svg'
)
)
const commonNameFilterInputDataset = inputGroup(
@@ -363,7 +363,7 @@ const commonLabelFilterInput = inputGroup(
'.content .content__action-bar-wrapper .filters .filter-column:nth-of-type(3) .input-wrapper',
true,
false,
- true
+ '.form-field__warning svg'
)
)
const commonTableTreeFilterDropdown = dropdownComponent(
@@ -378,6 +378,7 @@ const commonTableTreeFilterDropdown = dropdownComponent(
module.exports = {
featureSetsTab: {
+ Table_FilterBy_Button: tableFilterByButton,
Table_Refresh_Button: tableRefreshButton,
Create_Set_Button: pageHeaderButton,
Table_Expand_Rows_Button: By.css(
@@ -392,6 +393,7 @@ module.exports = {
},
featuresTab: {
Feature_Store_Tab_Selector: featureStoreTabSelector,
+ Table_FilterBy_Button: tableFilterByButton,
Add_To_Feature_Vector_Button: By.css(
'.content .content__action-bar-wrapper .action-bar button.btn-secondary'
),
@@ -404,6 +406,7 @@ module.exports = {
featureVectorsTab: {
Feature_Store_Tab_Selector: featureStoreTabSelector,
Create_Vector_Button: pageHeaderButton,
+ Table_FilterBy_Button: tableFilterByButton,
Table_Name_Filter_Input: commonNameFilterInput,
Table_Label_Filter_Input: commonLabelFilterInput,
Table_Tag_Filter_Dropdown: commonTableTreeFilterDropdown,
@@ -422,6 +425,7 @@ module.exports = {
},
addToFeatureVector: {
Table_Tree_Filter_Dropdown: commonTableTreeFilterDropdown,
+ Table_FilterBy_Button: tableFilterByButton,
Table_Name_Filter_Input: commonNameFilterInput,
Table_Entity_Filter_Input: inputGroup(
generateInputGroup(
diff --git a/tests/features/common/page-objects/interactive-popup.po.js b/tests/features/common/page-objects/interactive-popup.po.js
index 43f6cba86..b7e38d09a 100644
--- a/tests/features/common/page-objects/interactive-popup.po.js
+++ b/tests/features/common/page-objects/interactive-popup.po.js
@@ -640,7 +640,12 @@ const commonScheduleButton = By.css('.modal__content [data-testid="schedule-btn"
const commonRunSaveButton = By.css('.modal__content [data-testid="run-btn"]')
const commonLabelFilterInput = inputGroup(
- generateInputGroup('[data-testid="labels-form-field-input"]', true, false, true)
+ generateInputGroup(
+ '[data-testid="labels-form-field-input"]',
+ true,
+ false,
+ '.form-field__warning svg'
+ )
)
const commonProjectFilterInput = inputGroup(
@@ -1689,6 +1694,22 @@ module.exports = {
}
}),
Checkbox_Label: By.css('#overlay_container .form-field-checkbox label'),
+ Table_Projects_Filter_Dropdown: dropdownComponent(
+ generateDropdownGroup(
+ '[data-testid="project-form-field-select"] [data-testid="select-header"]',
+ 'svg',
+ '[data-testid="select-body"] [data-testid="select-option"]',
+ ''
+ )
+ ),
+ Table_Entity_Filter_Input: inputGroup(
+ generateInputGroup(
+ '[data-testid="entities-form-field-input"]',
+ true,
+ false,
+ true
+ )
+ ),
Clear_Button: By.css('[data-testid="filter-clear-btn"]'),
Apply_Button: By.css('[data-testid="filter-apply-btn"]')
},
diff --git a/tests/features/featureStore.feature b/tests/features/featureStore.feature
index 5d796044e..657a880f1 100644
--- a/tests/features/featureStore.feature
+++ b/tests/features/featureStore.feature
@@ -26,13 +26,22 @@ Feature: Feature Store Page
Then verify "Feature_Store_Tab_Selector" on "Feature_Store_Feature_Sets_Tab" wizard should contains "Feature_Store"."Tab_List"
Then verify "Feature Sets" tab is active in "Feature_Store_Tab_Selector" on "Feature_Store_Feature_Sets_Tab" wizard
Then verify "Table_Refresh_Button" element visibility on "Feature_Store_Feature_Sets_Tab" wizard
- Then verify "Table_Tag_Filter_Dropdown" element visibility on "Feature_Store_Feature_Sets_Tab" wizard
- Then verify "Table_Tag_Filter_Dropdown" dropdown element on "Feature_Store_Feature_Sets_Tab" wizard should contains "Dropdown_Options"."Tag_Filer_Options"
+ Then verify "Table_FilterBy_Button" element visibility on "Feature_Store_Feature_Sets_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Feature_Store_Feature_Sets_Tab" wizard
+ Then verify "Table_Label_Filter_Input" element visibility on "FilterBy_Popup" wizard
+ Then verify "Table_Tree_Filter_Dropdown" element visibility on "FilterBy_Popup" wizard
+ Then verify "Table_Tree_Filter_Dropdown" dropdown element on "FilterBy_Popup" wizard should contains "Dropdown_Options"."Tag_Filer_Options"
+ Then verify "Apply_Button" element visibility on "FilterBy_Popup" wizard
+ Then verify "Apply_Button" element on "FilterBy_Popup" wizard is disabled
+ Then verify "Clear_Button" element visibility on "FilterBy_Popup" wizard
+ Then verify "Clear_Button" element on "FilterBy_Popup" wizard is disabled
+ Then click on "Table_FilterBy_Button" element on "Feature_Store_Feature_Sets_Tab" wizard
Then type value " " to "Table_Name_Filter_Input" field on "Feature_Store_Feature_Sets_Tab" wizard
Then verify "Table_Name_Filter_Input" on "Feature_Store_Feature_Sets_Tab" wizard should display hover warning "Input_Hint"."Input_Field_Invalid"
- Then verify "Table_Label_Filter_Input" element visibility on "Feature_Store_Feature_Sets_Tab" wizard
- Then type value " " to "Table_Label_Filter_Input" field on "Feature_Store_Feature_Sets_Tab" wizard
- Then verify "Table_Label_Filter_Input" on "Feature_Store_Feature_Sets_Tab" wizard should display hover warning "Input_Hint"."Input_Field_Invalid"
+ Then click on "Table_FilterBy_Button" element on "Feature_Store_Feature_Sets_Tab" wizard
+ Then verify "Table_Label_Filter_Input" element visibility on "FilterBy_Popup" wizard
+ Then type value " " to "Table_Label_Filter_Input" field on "FilterBy_Popup" wizard
+ Then verify "Table_Label_Filter_Input" on "FilterBy_Popup" wizard should display hover warning "Input_Hint"."Input_Field_Invalid"
Then verify "Feature_Sets_Table" element visibility on "Feature_Store_Feature_Sets_Tab" wizard
Then verify "Feature_Store_Tab_Selector" element visibility on "Feature_Store_Feature_Sets_Tab" wizard
Then verify "Create_Set_Button" element visibility on "Feature_Store_Feature_Sets_Tab" wizard
@@ -66,13 +75,23 @@ Feature: Feature Store Page
Then "Add_To_Feature_Vector_Button" element on "Feature_Store_Features_Tab" should contains "Add to feature vector" value
Then verify "Table_Refresh_Button" element visibility on "Feature_Store_Features_Tab" wizard
Then verify "Table_Name_Filter_Input" element visibility on "Feature_Store_Features_Tab" wizard
- Then verify "Table_Label_Filter_Input" element visibility on "Feature_Store_Features_Tab" wizard
- Then verify "Table_Tag_Filter_Dropdown" element visibility on "Feature_Store_Features_Tab" wizard
- Then verify "Table_Tag_Filter_Dropdown" dropdown element on "Feature_Store_Features_Tab" wizard should contains "Dropdown_Options"."Tag_Filer_Options"
+ Then verify "Table_FilterBy_Button" element visibility on "Feature_Store_Features_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Feature_Store_Features_Tab" wizard
+ Then verify "Table_Label_Filter_Input" element visibility on "FilterBy_Popup" wizard
+ Then verify "Table_Tree_Filter_Dropdown" element visibility on "FilterBy_Popup" wizard
+ Then verify "Table_Tree_Filter_Dropdown" dropdown element on "FilterBy_Popup" wizard should contains "Dropdown_Options"."Tag_Filer_Options"
+ Then verify "Apply_Button" element visibility on "FilterBy_Popup" wizard
+ Then verify "Apply_Button" element on "FilterBy_Popup" wizard is disabled
+ Then verify "Clear_Button" element visibility on "FilterBy_Popup" wizard
+ Then verify "Clear_Button" element on "FilterBy_Popup" wizard is disabled
+ Then click on "Table_FilterBy_Button" element on "Feature_Store_Feature_Sets_Tab" wizard
Then verify "Features_Table" element visibility on "Feature_Store_Features_Tab" wizard
Then select "project" with "test-test" value in breadcrumbs menu
Then "No_Data_Message" component on "commonPagesHeader" should contains "No_Data_Message"."Common_Message_Feature"
- Then select "All" option in "Table_Tag_Filter_Dropdown" dropdown on "Feature_Store_Features_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Feature_Store_Features_Tab" wizard
+ Then select "All" option in "Table_Tree_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
Then "No_Data_Message" component on "commonPagesHeader" should contains "No_Data_Message"."No_Features_Yet"
@MLFS
@@ -95,9 +114,16 @@ Feature: Feature Store Page
Then verify "Create_Vector_Button" element visibility on "Feature_Store_Features_Vectors_Tab" wizard
Then "Create_Vector_Button" element on "Feature_Store_Features_Vectors_Tab" should contains "Create Vector" value
Then verify "Table_Name_Filter_Input" element visibility on "Feature_Store_Features_Vectors_Tab" wizard
- Then verify "Table_Label_Filter_Input" element visibility on "Feature_Store_Features_Vectors_Tab" wizard
- Then verify "Table_Tag_Filter_Dropdown" element visibility on "Feature_Store_Features_Vectors_Tab" wizard
- Then verify "Table_Tag_Filter_Dropdown" dropdown element on "Feature_Store_Features_Vectors_Tab" wizard should contains "Dropdown_Options"."Tag_Filer_Options"
+ Then verify "Table_FilterBy_Button" element visibility on "Feature_Store_Features_Vectors_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Feature_Store_Features_Vectors_Tab" wizard
+ Then verify "Table_Label_Filter_Input" element visibility on "FilterBy_Popup" wizard
+ Then verify "Table_Tree_Filter_Dropdown" element visibility on "FilterBy_Popup" wizard
+ Then verify "Table_Tree_Filter_Dropdown" dropdown element on "FilterBy_Popup" wizard should contains "Dropdown_Options"."Tag_Filer_Options"
+ Then verify "Apply_Button" element visibility on "FilterBy_Popup" wizard
+ Then verify "Apply_Button" element on "FilterBy_Popup" wizard is disabled
+ Then verify "Clear_Button" element visibility on "FilterBy_Popup" wizard
+ Then verify "Clear_Button" element on "FilterBy_Popup" wizard is disabled
+ Then click on "Table_FilterBy_Button" element on "Feature_Store_Feature_Sets_Tab" wizard
Then verify "Table_Refresh_Button" element visibility on "Feature_Store_Features_Vectors_Tab" wizard
Then verify "Feature_Vectors_Table" element visibility on "Feature_Store_Features_Vectors_Tab" wizard
@@ -115,7 +141,9 @@ Feature: Feature Store Page
And hover "MLRun_Logo" component on "commonPagesHeader" wizard
And wait load page
Then verify "Feature Sets" tab is active in "Feature_Store_Tab_Selector" on "Feature_Store_Feature_Sets_Tab" wizard
- Then select "All" option in "Table_Tag_Filter_Dropdown" dropdown on "Feature_Store_Feature_Sets_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Feature_Store_Feature_Sets_Tab" wizard
+ Then select "All" option in "Table_Tree_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
And wait load page
When click on cell with row index 2 in "name" column in "Feature_Sets_Table" table on "Feature_Store_Feature_Sets_Tab" wizard
Then verify "Header" element visibility on "Feature_Sets_Info_Pane" wizard
@@ -218,7 +246,9 @@ Feature: Feature Store Page
And wait load page
And select "Feature Vectors" tab in "Feature_Store_Tab_Selector" on "Feature_Store_Feature_Sets_Tab" wizard
Then verify "Feature Vectors" tab is active in "Feature_Store_Tab_Selector" on "Feature_Store_Features_Vectors_Tab" wizard
- When select "test-tag" option in "Table_Tag_Filter_Dropdown" filter dropdown on "Feature_Store_Features_Vectors_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Feature_Store_Features_Vectors_Tab" wizard
+ When select "test-tag" option in "Table_Tree_Filter_Dropdown" filter dropdown on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
And wait load page
When click on cell with row index 1 in "name" column in "Feature_Vectors_Table" table on "Feature_Store_Features_Vectors_Tab" wizard
Then verify "Header" element visibility on "Feature_Vectors_Info_Pane" wizard
@@ -381,16 +411,19 @@ Feature: Feature Store Page
And wait load page
And select "tab" with "Feature store" value in breadcrumbs menu
And wait load page
- Then type value "my-key" to "Table_Label_Filter_Input" field on "Feature_Store_Feature_Sets_Tab" wizard
- Then click on "Table_Refresh_Button" element on "Feature_Store_Feature_Sets_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Feature_Store_Feature_Sets_Tab" wizard
+ Then type value "my-key" to "Table_Label_Filter_Input" field on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
And wait load page
Then value in "labels" column with "text" in "Feature_Sets_Table" on "Feature_Store_Feature_Sets_Tab" wizard should contains "my-key"
- Then type value "type=featureSet" to "Table_Label_Filter_Input" field on "Feature_Store_Feature_Sets_Tab" wizard
- Then click on "Table_Refresh_Button" element on "Feature_Store_Feature_Sets_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Feature_Store_Feature_Sets_Tab" wizard
+ Then type value "type=featureSet" to "Table_Label_Filter_Input" field on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
And wait load page
Then value in "labels" column with "text" in "Feature_Sets_Table" on "Feature_Store_Feature_Sets_Tab" wizard should contains "type=featureSet"
- Then type value "v3io_user=123" to "Table_Label_Filter_Input" field on "Feature_Store_Feature_Sets_Tab" wizard
- Then click on "Table_Refresh_Button" element on "Feature_Store_Feature_Sets_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Feature_Store_Feature_Sets_Tab" wizard
+ Then type value "v3io_user=123" to "Table_Label_Filter_Input" field on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
And wait load page
And verify "No_Data_Message" element visibility on "commonPagesHeader" wizard
@@ -425,16 +458,19 @@ Feature: Feature Store Page
And wait load page
And select "Features" tab in "Feature_Store_Tab_Selector" on "Feature_Store_Feature_Sets_Tab" wizard
And wait load page
- Then type value "owner" to "Table_Label_Filter_Input" field on "Feature_Store_Features_Tab" wizard
- Then click on "Table_Refresh_Button" element on "Feature_Store_Features_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Feature_Store_Features_Tab" wizard
+ Then type value "owner" to "Table_Label_Filter_Input" field on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
And wait load page
Then value in "labels" column with "dropdowns" in "Features_Table" on "Feature_Store_Features_Tab" wizard should contains "owner"
- Then type value "type=feature" to "Table_Label_Filter_Input" field on "Feature_Store_Features_Tab" wizard
- Then click on "Table_Refresh_Button" element on "Feature_Store_Features_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Feature_Store_Features_Tab" wizard
+ Then type value "type=feature" to "Table_Label_Filter_Input" field on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
And wait load page
Then value in "labels" column with "dropdowns" in "Features_Table" on "Feature_Store_Features_Tab" wizard should contains "type=feature"
- Then type value "v3io_user=123" to "Table_Label_Filter_Input" field on "Feature_Store_Features_Tab" wizard
- Then click on "Table_Refresh_Button" element on "Feature_Store_Features_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Feature_Store_Features_Tab" wizard
+ Then type value "v3io_user=123" to "Table_Label_Filter_Input" field on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
And wait load page
And verify "No_Data_Message" element visibility on "commonPagesHeader" wizard
@@ -466,16 +502,19 @@ Feature: Feature Store Page
And wait load page
And select "Feature Vectors" tab in "Feature_Store_Tab_Selector" on "Feature_Store_Features_Vectors_Tab" wizard
And wait load page
- Then type value "owner" to "Table_Label_Filter_Input" field on "Feature_Store_Features_Vectors_Tab" wizard
- Then click on "Table_Refresh_Button" element on "Feature_Store_Features_Vectors_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Feature_Store_Features_Vectors_Tab" wizard
+ Then type value "owner" to "Table_Label_Filter_Input" field on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
And wait load page
Then value in "labels" column with "text" in "Feature_Vectors_Table" on "Feature_Store_Features_Vectors_Tab" wizard should contains "owner"
- Then type value "type=featureVector" to "Table_Label_Filter_Input" field on "Feature_Store_Features_Vectors_Tab" wizard
- Then click on "Table_Refresh_Button" element on "Feature_Store_Features_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Feature_Store_Features_Vectors_Tab" wizard
+ Then type value "type=featureVector" to "Table_Label_Filter_Input" field on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
And wait load page
Then value in "labels" column with "text" in "Feature_Vectors_Table" on "Feature_Store_Features_Vectors_Tab" wizard should contains "type=featureVector"
- Then type value "v3io_user=123" to "Table_Label_Filter_Input" field on "Feature_Store_Features_Vectors_Tab" wizard
- Then click on "Table_Refresh_Button" element on "Feature_Store_Features_Vectors_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Feature_Store_Features_Vectors_Tab" wizard
+ Then type value "v3io_user=123" to "Table_Label_Filter_Input" field on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
And wait load page
And verify "No_Data_Message" element visibility on "commonPagesHeader" wizard
@@ -489,8 +528,9 @@ Feature: Feature Store Page
And select "tab" with "Feature store" value in breadcrumbs menu
And wait load page
Then verify "Feature Sets" tab is active in "Feature_Store_Tab_Selector" on "Feature_Store_Feature_Sets_Tab" wizard
- When select "my-tag" option in "Table_Tag_Filter_Dropdown" dropdown on "Feature_Store_Feature_Sets_Tab" wizard
- Then click on "Table_Refresh_Button" element on "Feature_Store_Feature_Sets_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Feature_Store_Feature_Sets_Tab" wizard
+ When select "my-tag" option in "Table_Tree_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
And wait load page
Then value in "tag" column with "text" in "Feature_Sets_Table" on "Feature_Store_Feature_Sets_Tab" wizard should contains "my-tag"
@@ -504,8 +544,9 @@ Feature: Feature Store Page
And select "tab" with "Feature store" value in breadcrumbs menu
And wait load page
And select "Feature Vectors" tab in "Feature_Store_Tab_Selector" on "Feature_Store_Feature_Sets_Tab" wizard
- When select "test-tag" option in "Table_Tag_Filter_Dropdown" dropdown on "Feature_Store_Features_Vectors_Tab" wizard
- Then click on "Table_Refresh_Button" element on "Feature_Store_Features_Vectors_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Feature_Store_Features_Vectors_Tab" wizard
+ When select "test-tag" option in "Table_Tree_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
And wait load page
Then value in "tag" column with "text" in "Feature_Vectors_Table" on "Feature_Store_Features_Vectors_Tab" wizard should contains "test-tag"
@@ -1044,23 +1085,38 @@ Feature: Feature Store Page
Then verify "Feature_Store_Tab_Selector" on "Feature_Store_Feature_Sets_Tab" wizard should contains "Feature_Store"."Tab_List"
Then verify "Feature Sets" tab is active in "Feature_Store_Tab_Selector" on "Feature_Store_Feature_Sets_Tab" wizard
Then check "expand_btn" not presented in "Feature_Sets_Table" on "Feature_Store_Feature_Sets_Tab" wizard
- When select "my-tag" option in "Table_Tag_Filter_Dropdown" dropdown on "Feature_Store_Feature_Sets_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Feature_Store_Feature_Sets_Tab" wizard
+ When select "my-tag" option in "Table_Tree_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
Then check "expand_btn" not presented in "Feature_Sets_Table" on "Feature_Store_Feature_Sets_Tab" wizard
When select "Features" tab in "Feature_Store_Tab_Selector" on "Feature_Store_Feature_Sets_Tab" wizard
And wait load page
Then verify "Features" tab is active in "Feature_Store_Tab_Selector" on "Feature_Store_Feature_Sets_Tab" wizard
Then check "expand_btn" not presented in "Features_Table" on "Feature_Store_Features_Tab" wizard
- When select "All" option in "Table_Tag_Filter_Dropdown" dropdown on "Feature_Store_Features_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Feature_Store_Features_Tab" wizard
+ When select "All" option in "Table_Tree_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
Then check "expand_btn" visibility in "Features_Table" on "Feature_Store_Features_Tab" wizard with 0 offset
- When select "my-tag" option in "Table_Tag_Filter_Dropdown" dropdown on "Feature_Store_Features_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Feature_Store_Features_Tab" wizard
+ When select "my-tag" option in "Table_Tree_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
Then check "expand_btn" not presented in "Features_Table" on "Feature_Store_Features_Tab" wizard
When select "Feature Vectors" tab in "Feature_Store_Tab_Selector" on "Feature_Store_Feature_Sets_Tab" wizard
And wait load page
Then verify "Feature Vectors" tab is active in "Feature_Store_Tab_Selector" on "Feature_Store_Feature_Sets_Tab" wizard
Then check "expand_btn" not presented in "Feature_Vectors_Table" on "Feature_Store_Features_Vectors_Tab" wizard
- When select "All" option in "Table_Tag_Filter_Dropdown" dropdown on "Feature_Store_Features_Vectors_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Feature_Store_Features_Vectors_Tab" wizard
+ When select "All" option in "Table_Tree_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
Then check "expand_btn" visibility in "Feature_Vectors_Table" on "Feature_Store_Features_Vectors_Tab" wizard with 0 offset
- When select "test-tag" option in "Table_Tag_Filter_Dropdown" dropdown on "Feature_Store_Features_Vectors_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Feature_Store_Features_Vectors_Tab" wizard
+ When select "test-tag" option in "Table_Tree_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
Then check "expand_btn" not presented in "Feature_Vectors_Table" on "Feature_Store_Features_Vectors_Tab" wizard
@MLFS
@@ -1093,7 +1149,10 @@ Feature: Feature Store Page
Then verify "Cross_Cancel_Button" element visibility on "View_YAML" wizard
Then verify "YAML_Modal_Container" element visibility on "View_YAML" wizard
Then click on "Cross_Cancel_Button" element on "View_YAML" wizard
- Then select "All" option in "Table_Tag_Filter_Dropdown" dropdown on "Feature_Store_Feature_Sets_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Feature_Store_Feature_Sets_Tab" wizard
+ When select "All" option in "Table_Tree_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
Then click on cell with row index 1 in "expand_btn" column in "Feature_Sets_Table" table on "Feature_Store_Feature_Sets_Tab" wizard
Then select "View YAML" option in action menu on "Feature_Store_Feature_Sets_Tab" wizard in "Feature_Sets_Table" table at row with "latest" value in "name_expand_btn" column
Then verify if "View_YAML" popup dialog appears
@@ -1138,7 +1197,10 @@ Feature: Feature Store Page
Then verify "Cross_Cancel_Button" element visibility on "View_YAML" wizard
Then verify "YAML_Modal_Container" element visibility on "View_YAML" wizard
Then click on "Cross_Cancel_Button" element on "View_YAML" wizard
- Then select "All" option in "Table_Tag_Filter_Dropdown" dropdown on "Feature_Store_Features_Vectors_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Feature_Store_Features_Vectors_Tab" wizard
+ When select "All" option in "Table_Tree_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
Then click on cell with row index 4 in "expand_btn" column in "Feature_Vectors_Table" table on "Feature_Store_Features_Vectors_Tab" wizard
Then select "View YAML" option in action menu on "Feature_Store_Features_Vectors_Tab" wizard in "Feature_Vectors_Table" table at row with "my-tag" value in "name_expand_btn" column
Then verify if "View_YAML" popup dialog appears
@@ -1304,18 +1366,29 @@ Feature: Feature Store Page
Then click on "Create_Button" element on "Create_Feature_Vector_Popup" wizard
And wait load page
Then verify "Add_To_Feature_Vector_Table" element visibility on "Add_To_Feature_Vector_Tab" wizard
- Then verify "Table_Tree_Filter_Dropdown" element visibility on "Add_To_Feature_Vector_Tab" wizard
Then verify "Table_Name_Filter_Input" element visibility on "Add_To_Feature_Vector_Tab" wizard
- Then verify "Table_Entity_Filter_Input" element visibility on "Add_To_Feature_Vector_Tab" wizard
- Then verify "Table_Label_Filter_Input" element visibility on "Add_To_Feature_Vector_Tab" wizard
- Then verify "Table_Projects_Filter_Dropdown" element visibility on "Add_To_Feature_Vector_Tab" wizard
+ Then verify "Table_FilterBy_Button" element visibility on "Add_To_Feature_Vector_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Add_To_Feature_Vector_Tab" wizard
+ Then verify "Table_Projects_Filter_Dropdown" element visibility on "FilterBy_Popup" wizard
+ Then verify "Table_Entity_Filter_Input" element visibility on "FilterBy_Popup" wizard
+ Then verify "Table_Label_Filter_Input" element visibility on "FilterBy_Popup" wizard
+ Then verify "Table_Tree_Filter_Dropdown" element visibility on "FilterBy_Popup" wizard
+ Then verify "Apply_Button" element visibility on "FilterBy_Popup" wizard
+ Then verify "Apply_Button" element on "FilterBy_Popup" wizard is disabled
+ Then verify "Clear_Button" element visibility on "FilterBy_Popup" wizard
+ Then verify "Clear_Button" element on "FilterBy_Popup" wizard is disabled
+ Then click on "Table_FilterBy_Button" element on "Add_To_Feature_Vector_Tab" wizard
Then verify "Table_Refresh_Button" element visibility on "Add_To_Feature_Vector_Tab" wizard
Then verify "Features_Panel_Title" element visibility on "Add_To_Feature_Vector_Tab" wizard
Then verify "Features_Panel_Title" on "Add_To_Feature_Vector_Tab" wizard should display "Input_Hint"."Add_Feature_Vector_Hint"
- When select "test-test" option in "Table_Projects_Filter_Dropdown" filter dropdown on "Add_To_Feature_Vector_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Add_To_Feature_Vector_Tab" wizard
+ When select "test-test" option in "Table_Projects_Filter_Dropdown" filter dropdown on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
And wait load page
Then "No_Data_Message" component on "commonPagesHeader" should contains "No_Data_Message"."Common_Message_Feature_Vector_Tab"
- When select "stocks" option in "Table_Projects_Filter_Dropdown" filter dropdown on "Add_To_Feature_Vector_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Add_To_Feature_Vector_Tab" wizard
+ When select "stocks" option in "Table_Projects_Filter_Dropdown" filter dropdown on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
And wait load page
Then verify "Features_Panel_Title" element visibility on "Add_To_Feature_Vector_Tab" wizard
Then verify "Features_Panel_Title" on "Add_To_Feature_Vector_Tab" wizard should display "Input_Hint"."Add_Feature_Vector_Hint"
@@ -1344,13 +1417,19 @@ Feature: Feature Store Page
Then click on "Create_Button" element on "Create_Feature_Vector_Popup" wizard
And wait load page
Then type value "dep" to "Table_Name_Filter_Input" field on "Add_To_Feature_Vector_Tab" wizard
- Then type value "patient_id" to "Table_Entity_Filter_Input" field on "Add_To_Feature_Vector_Tab" wizard
Then click on "Table_Refresh_Button" element on "Add_To_Feature_Vector_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Add_To_Feature_Vector_Tab" wizard
+ Then type value "patient_id" to "Table_Entity_Filter_Input" field on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
Then value in "featureName" column with "text" in "Add_To_Feature_Vector_Table" on "Add_To_Feature_Vector_Tab" wizard should contains "department"
Then value in "entities" column with "text" in "Add_To_Feature_Vector_Table" on "Add_To_Feature_Vector_Tab" wizard should contains "patient_id"
Then type value "" to "Table_Name_Filter_Input" field on "Add_To_Feature_Vector_Tab" wizard
- Then type value "patient_id" to "Table_Entity_Filter_Input" field on "Add_To_Feature_Vector_Tab" wizard
Then click on "Table_Refresh_Button" element on "Add_To_Feature_Vector_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Add_To_Feature_Vector_Tab" wizard
+ Then type value "patient_id" to "Table_Entity_Filter_Input" field on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
Then value in "entities" column with "text" in "Add_To_Feature_Vector_Table" on "Add_To_Feature_Vector_Tab" wizard should contains "patient_id"
@MLFS
@@ -1394,7 +1473,10 @@ Feature: Feature Store Page
| patient_details : latest #age_mapped_elder |
| patient_details : latest #department |
| patient_details : latest #gender |
- Then select "stocks" option in "Table_Projects_Filter_Dropdown" dropdown on "Add_To_Feature_Vector_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Add_To_Feature_Vector_Tab" wizard
+ Then select "stocks" option in "Table_Projects_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
Then expand "Features_By_Projects_Accordion" on "Add_To_Feature_Vector_Tab" wizard
Then verify values in "Features_By_Projects_Table" table in "Features_By_Projects_Accordion" on "Add_To_Feature_Vector_Tab" wizard
| feature |
@@ -1423,7 +1505,10 @@ Feature: Feature Store Page
| stocks : latest #exchange |
Then click on "Add_Button" element on "Add_To_Feature_Vector_Tab" wizard
And set tear-down property "featureVector" created in "fsdemo-admin" project with "temp_vector01" value
- When select "temp_tag" option in "Table_Tree_Filter_Dropdown" filter dropdown on "Add_To_Feature_Vector_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Add_To_Feature_Vector_Tab" wizard
+ When select "temp_tag" option in "Table_Tree_Filter_Dropdown" filter dropdown on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
Then value in "name" column with "text" in "Feature_Vectors_Table" on "Feature_Store_Features_Vectors_Tab" wizard should contains "temp_vector"
Then value in "description" column with "text" in "Feature_Vectors_Table" on "Feature_Store_Features_Vectors_Tab" wizard should contains "Automation test description"
@@ -1449,8 +1534,11 @@ Feature: Feature Store Page
| featureName |
| department |
| bad |
- | room |
- Then select "stocks-admin" option in "Table_Projects_Filter_Dropdown" dropdown on "Add_To_Feature_Vector_Tab" wizard
+ | room |
+ Then click on "Table_FilterBy_Button" element on "Add_To_Feature_Vector_Tab" wizard
+ Then select "stocks-admin" option in "Table_Projects_Filter_Dropdown" dropdown on "FilterBy_Popup" wizard
+ Then click on "Apply_Button" element on "FilterBy_Popup" wizard
+ And wait load page
Then click on "add_feature_btn" in "Add_To_Feature_Vector_Table" table on "Add_To_Feature_Vector_Tab" wizard
| featureName |
| price |
diff --git a/tests/features/projectMonitoring.feature b/tests/features/projectMonitoring.feature
index 29f42f741..5d5c4821f 100644
--- a/tests/features/projectMonitoring.feature
+++ b/tests/features/projectMonitoring.feature
@@ -568,12 +568,22 @@ Feature: Project Monitoring Page
Then verify "Feature_Store_Tab_Selector" on "Feature_Store_Feature_Sets_Tab" wizard should contains "Feature_Store"."Tab_List"
Then verify "Feature Sets" tab is active in "Feature_Store_Tab_Selector" on "Feature_Store_Feature_Sets_Tab" wizard
Then verify "Table_Refresh_Button" element visibility on "Feature_Store_Feature_Sets_Tab" wizard
- Then verify "Table_Tag_Filter_Dropdown" element visibility on "Feature_Store_Feature_Sets_Tab" wizard
+ Then verify "Table_FilterBy_Button" element visibility on "Feature_Store_Feature_Sets_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Feature_Store_Feature_Sets_Tab" wizard
+ Then verify "Table_Label_Filter_Input" element visibility on "FilterBy_Popup" wizard
+ Then verify "Table_Tree_Filter_Dropdown" element visibility on "FilterBy_Popup" wizard
+ Then verify "Table_Tree_Filter_Dropdown" dropdown element on "FilterBy_Popup" wizard should contains "Dropdown_Options"."Tag_Filer_Options"
+ Then verify "Apply_Button" element visibility on "FilterBy_Popup" wizard
+ Then verify "Apply_Button" element on "FilterBy_Popup" wizard is disabled
+ Then verify "Clear_Button" element visibility on "FilterBy_Popup" wizard
+ Then verify "Clear_Button" element on "FilterBy_Popup" wizard is disabled
+ Then click on "Table_FilterBy_Button" element on "Feature_Store_Feature_Sets_Tab" wizard
Then type value " " to "Table_Name_Filter_Input" field on "Feature_Store_Feature_Sets_Tab" wizard
Then verify "Table_Name_Filter_Input" on "Feature_Store_Feature_Sets_Tab" wizard should display hover warning "Input_Hint"."Input_Field_Invalid"
- Then verify "Table_Label_Filter_Input" element visibility on "Feature_Store_Feature_Sets_Tab" wizard
- Then type value " " to "Table_Label_Filter_Input" field on "Feature_Store_Feature_Sets_Tab" wizard
- Then verify "Table_Label_Filter_Input" on "Feature_Store_Feature_Sets_Tab" wizard should display hover warning "Input_Hint"."Input_Field_Invalid"
+ Then click on "Table_FilterBy_Button" element on "Feature_Store_Feature_Sets_Tab" wizard
+ Then verify "Table_Label_Filter_Input" element visibility on "FilterBy_Popup" wizard
+ Then type value " " to "Table_Label_Filter_Input" field on "FilterBy_Popup" wizard
+ Then verify "Table_Label_Filter_Input" on "FilterBy_Popup" wizard should display hover warning "Input_Hint"."Input_Field_Invalid"
Then verify "Feature_Sets_Table" element visibility on "Feature_Store_Feature_Sets_Tab" wizard
Then verify "Feature_Store_Tab_Selector" element visibility on "Feature_Store_Feature_Sets_Tab" wizard
Then verify "Create_Set_Button" element visibility on "Feature_Store_Feature_Sets_Tab" wizard
diff --git a/tests/features/quickActions.feature b/tests/features/quickActions.feature
index 55216f5c1..79fa89454 100644
--- a/tests/features/quickActions.feature
+++ b/tests/features/quickActions.feature
@@ -485,13 +485,22 @@ Feature: Quick actions Page
Then verify "Feature_Store_Tab_Selector" on "Feature_Store_Feature_Sets_Tab" wizard should contains "Feature_Store"."Tab_List"
Then verify "Feature Sets" tab is active in "Feature_Store_Tab_Selector" on "Feature_Store_Feature_Sets_Tab" wizard
Then verify "Table_Refresh_Button" element visibility on "Feature_Store_Feature_Sets_Tab" wizard
- Then verify "Table_Tag_Filter_Dropdown" element visibility on "Feature_Store_Feature_Sets_Tab" wizard
- Then verify "Table_Tag_Filter_Dropdown" dropdown element on "Feature_Store_Feature_Sets_Tab" wizard should contains "Dropdown_Options"."Tag_Filer_Options"
+ Then verify "Table_FilterBy_Button" element visibility on "Feature_Store_Feature_Sets_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Feature_Store_Feature_Sets_Tab" wizard
+ Then verify "Table_Label_Filter_Input" element visibility on "FilterBy_Popup" wizard
+ Then verify "Table_Tree_Filter_Dropdown" element visibility on "FilterBy_Popup" wizard
+ Then verify "Table_Tree_Filter_Dropdown" dropdown element on "FilterBy_Popup" wizard should contains "Dropdown_Options"."Tag_Filer_Options"
+ Then verify "Apply_Button" element visibility on "FilterBy_Popup" wizard
+ Then verify "Apply_Button" element on "FilterBy_Popup" wizard is disabled
+ Then verify "Clear_Button" element visibility on "FilterBy_Popup" wizard
+ Then verify "Clear_Button" element on "FilterBy_Popup" wizard is disabled
+ Then click on "Table_FilterBy_Button" element on "Feature_Store_Feature_Sets_Tab" wizard
Then type value " " to "Table_Name_Filter_Input" field on "Feature_Store_Feature_Sets_Tab" wizard
Then verify "Table_Name_Filter_Input" on "Feature_Store_Feature_Sets_Tab" wizard should display hover warning "Input_Hint"."Input_Field_Invalid"
- Then verify "Table_Label_Filter_Input" element visibility on "Feature_Store_Feature_Sets_Tab" wizard
- Then type value " " to "Table_Label_Filter_Input" field on "Feature_Store_Feature_Sets_Tab" wizard
- Then verify "Table_Label_Filter_Input" on "Feature_Store_Feature_Sets_Tab" wizard should display hover warning "Input_Hint"."Input_Field_Invalid"
+ Then click on "Table_FilterBy_Button" element on "Feature_Store_Feature_Sets_Tab" wizard
+ Then verify "Table_Label_Filter_Input" element visibility on "FilterBy_Popup" wizard
+ Then type value " " to "Table_Label_Filter_Input" field on "FilterBy_Popup" wizard
+ Then verify "Table_Label_Filter_Input" on "FilterBy_Popup" wizard should display hover warning "Input_Hint"."Input_Field_Invalid"
Then verify "Feature_Sets_Table" element visibility on "Feature_Store_Feature_Sets_Tab" wizard
Then verify "Feature_Store_Tab_Selector" element visibility on "Feature_Store_Feature_Sets_Tab" wizard
Then verify "Create_Set_Button" element visibility on "Feature_Store_Feature_Sets_Tab" wizard
@@ -564,10 +573,18 @@ Feature: Quick actions Page
| Feature Vectors |
And wait load page
Then verify "Table_Name_Filter_Input" element visibility on "Feature_Store_Features_Vectors_Tab" wizard
- Then verify "Table_Label_Filter_Input" element visibility on "Feature_Store_Features_Vectors_Tab" wizard
- Then verify "Table_Tag_Filter_Dropdown" element visibility on "Feature_Store_Features_Vectors_Tab" wizard
- Then verify "Table_Tag_Filter_Dropdown" dropdown element on "Feature_Store_Features_Vectors_Tab" wizard should contains "Dropdown_Options"."Tag_Filer_Options"
+ Then verify "Table_FilterBy_Button" element visibility on "Feature_Store_Features_Vectors_Tab" wizard
+ Then click on "Table_FilterBy_Button" element on "Feature_Store_Features_Vectors_Tab" wizard
+ Then verify "Table_Label_Filter_Input" element visibility on "FilterBy_Popup" wizard
+ Then verify "Table_Tree_Filter_Dropdown" element visibility on "FilterBy_Popup" wizard
+ Then verify "Table_Tree_Filter_Dropdown" dropdown element on "FilterBy_Popup" wizard should contains "Dropdown_Options"."Tag_Filer_Options"
+ Then verify "Apply_Button" element visibility on "FilterBy_Popup" wizard
+ Then verify "Apply_Button" element on "FilterBy_Popup" wizard is disabled
+ Then verify "Clear_Button" element visibility on "FilterBy_Popup" wizard
+ Then verify "Clear_Button" element on "FilterBy_Popup" wizard is disabled
+ Then click on "Table_FilterBy_Button" element on "Feature_Store_Feature_Sets_Tab" wizard
Then verify "Table_Refresh_Button" element visibility on "Feature_Store_Features_Vectors_Tab" wizard
+ Then verify "Feature_Vectors_Table" element visibility on "Feature_Store_Features_Vectors_Tab" wizard
@MLPH
@passive
From b430ae048da03ba5779d07a3f9bd1e99c2f9a586 Mon Sep 17 00:00:00 2001
From: illia-prokopchuk <78905712+illia-prokopchuk@users.noreply.github.com>
Date: Sat, 9 Nov 2024 03:39:01 +0200
Subject: [PATCH 20/26] Fix [Job Inputs, Job Artifacts] opening a new tab
outside the dashboard (#2869)
---
.../DetailsArtifacts/detailsArtifacts.util.js | 15 +++++++--------
.../DetailsInputs/detailsInputs.util.js | 2 +-
src/utils/generateStoreResourceLink.js | 18 ++++++++++++------
3 files changed, 20 insertions(+), 15 deletions(-)
diff --git a/src/components/DetailsArtifacts/detailsArtifacts.util.js b/src/components/DetailsArtifacts/detailsArtifacts.util.js
index 85f5a02dd..fa4eb3e10 100644
--- a/src/components/DetailsArtifacts/detailsArtifacts.util.js
+++ b/src/components/DetailsArtifacts/detailsArtifacts.util.js
@@ -67,15 +67,15 @@ export const generateArtifactsPreviewContent = (selectedJob, artifacts) => {
}
export const generateArtifactsTabContent = (artifacts, params, iteration, showArtifact) => {
- return artifacts.map((artifact, index) => {
+ return artifacts.map(artifact => {
const artifactScreenLinks = {
- model: `/projects/${params.projectName || artifact.project}/models/${MODELS_TAB}/${
+ model: `${process.env.PUBLIC_URL}/projects/${params.projectName || artifact.project}/models/${MODELS_TAB}/${
artifact.db_key || artifact.key
- }/${artifact.tag ? artifact.tag : artifact.tree ?? TAG_FILTER_LATEST}${
+ }/${artifact.tag ? artifact.tag : (artifact.tree ?? TAG_FILTER_LATEST)}${
iteration ? `/${iteration}` : ''
}/overview`,
- dataset: `/projects/${params.projectName || artifact.project}/${DATASETS_TAB}/${artifact.db_key || artifact.key}/${
- artifact.tag ? artifact.tag : artifact.tree ?? TAG_FILTER_LATEST
+ dataset: `${process.env.PUBLIC_URL}/projects/${params.projectName || artifact.project}/${DATASETS_TAB}/${artifact.db_key || artifact.key}/${
+ artifact.tag ? artifact.tag : (artifact.tree ?? TAG_FILTER_LATEST)
}${iteration ? `/${iteration}` : ''}/overview`
}
@@ -120,11 +120,10 @@ export const generateArtifactsTabContent = (artifacts, params, iteration, showAr
diff --git a/src/components/DetailsInputs/detailsInputs.util.js b/src/components/DetailsInputs/detailsInputs.util.js
index 9c00f04d1..179b3748b 100644
--- a/src/components/DetailsInputs/detailsInputs.util.js
+++ b/src/components/DetailsInputs/detailsInputs.util.js
@@ -68,7 +68,7 @@ export const generateInputsTabContent = (inputs, showArtifact) => {
disabled={!input.ui.isShowDetailsActive}
>
{input.ui.isShowDetailsActive ? (
-
+
) : (
diff --git a/src/utils/generateStoreResourceLink.js b/src/utils/generateStoreResourceLink.js
index 3061687eb..ff6a75334 100644
--- a/src/utils/generateStoreResourceLink.js
+++ b/src/utils/generateStoreResourceLink.js
@@ -17,7 +17,13 @@ illegal under applicable law, and the grant of the foregoing license
under the Apache 2.0 license is conditioned upon your compliance with
such restriction.
*/
-import { DATASETS_TAB, FEATURE_VECTORS_TAB, FILES_TAB, MODELS_TAB, TAG_FILTER_LATEST } from '../constants'
+import {
+ DATASETS_TAB,
+ FEATURE_VECTORS_TAB,
+ FILES_TAB,
+ MODELS_TAB,
+ TAG_FILTER_LATEST
+} from '../constants'
export const generateStoreResourceLink = (input, projectName) => {
if ([MODELS_TAB, DATASETS_TAB].includes(input.kind)) {
@@ -27,17 +33,17 @@ export const generateStoreResourceLink = (input, projectName) => {
}
const inputsLinks = {
- model: `/projects/${projectName}/models/${MODELS_TAB}/${
+ model: `${process.env.PUBLIC_URL}/projects/${projectName}/models/${MODELS_TAB}/${
input.db_key || input.key
}/${input.tag ?? input.tree ?? TAG_FILTER_LATEST}${input.iter ? `/${input.iter}` : ''}/overview`,
- dataset: `/projects/${projectName}/${DATASETS_TAB}/${
+ dataset: `${process.env.PUBLIC_URL}/projects/${projectName}/${DATASETS_TAB}/${
input.db_key || input.key
}/${input.tag ?? input.tree ?? TAG_FILTER_LATEST}${input.iter ? `/${input.iter}` : ''}/overview`,
- files: `/projects/${projectName}/${FILES_TAB}/${input.db_key || input.key}/${input.tag ?? input.tree ?? TAG_FILTER_LATEST}${
+ files: `${process.env.PUBLIC_URL}/projects/${projectName}/${FILES_TAB}/${input.db_key || input.key}/${input.tag ?? input.tree ?? TAG_FILTER_LATEST}${
input.iter ? `/${input.iter}` : ''
}/overview`,
- FeatureVector: `/projects/${projectName}/feature-store/${FEATURE_VECTORS_TAB}/${input.name ?? input.key}/${input.tag ?? input.uid ?? TAG_FILTER_LATEST}/overview`
+ FeatureVector: `${process.env.PUBLIC_URL}/projects/${projectName}/feature-store/${FEATURE_VECTORS_TAB}/${input.name ?? input.key}/${input.tag ?? input.uid ?? TAG_FILTER_LATEST}/overview`
}
- return input ? inputsLinks[input.kind] ?? inputsLinks.files : ''
+ return input ? (inputsLinks[input.kind] ?? inputsLinks.files) : ''
}
From 84b6d5091046eecf20e5d6e70f3b2138f1c2183b Mon Sep 17 00:00:00 2001
From: Ilank <63646693+ilan7empest@users.noreply.github.com>
Date: Tue, 12 Nov 2024 10:51:06 +0200
Subject: [PATCH 21/26] Bump DRC version `2.2.5` (#2874)
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 40b7f09af..b82241181 100644
--- a/package.json
+++ b/package.json
@@ -24,7 +24,7 @@
"final-form-arrays": "^3.1.0",
"fs-extra": "^10.0.0",
"identity-obj-proxy": "^3.0.0",
- "iguazio.dashboard-react-controls": "2.2.4",
+ "iguazio.dashboard-react-controls": "2.2.5",
"is-wsl": "^1.1.0",
"js-base64": "^2.5.2",
"js-yaml": "^4.1.0",
From e06d4b3cf1066cafaf2ad165eb25b0a9580004d4 Mon Sep 17 00:00:00 2001
From: Ilank <63646693+ilan7empest@users.noreply.github.com>
Date: Tue, 12 Nov 2024 10:52:43 +0200
Subject: [PATCH 22/26] Fix [Jobs] reason for job failure is not displayed
(#2870)
---
src/utils/parseJob.js | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/src/utils/parseJob.js b/src/utils/parseJob.js
index 8bfa06eae..4e025de44 100644
--- a/src/utils/parseJob.js
+++ b/src/utils/parseJob.js
@@ -52,7 +52,12 @@ export const parseJob = (job, tab, customState, customError) => {
: convertTriggerToCrontab(job.scheduled_object?.schedule)
},
startTime: new Date(job.last_run?.status?.start_time),
- state: getState(job.last_run?.status?.state, JOBS_PAGE, JOB_KIND_JOB),
+ state: getState(
+ job.last_run?.status?.state,
+ JOBS_PAGE,
+ JOB_KIND_JOB,
+ job.last_run?.status?.reason ?? job.last_run?.status?.error
+ ),
type:
job.kind === JOB_KIND_PIPELINE || jobHasWorkflowLabel(job) ? JOB_KIND_WORKFLOW : job.kind,
ui: {
@@ -91,7 +96,12 @@ export const parseJob = (job, tab, customState, customError) => {
results: job.status?.results || {},
resultsChips: parseKeyValues(job.status?.results || {}),
startTime: new Date(job.status?.start_time),
- state: getState(customState || job.status?.state, JOBS_PAGE, JOB_KIND_JOB, job.status?.reason),
+ state: getState(
+ customState || job.status?.state,
+ JOBS_PAGE,
+ JOB_KIND_JOB,
+ job.status?.reason ?? job.status?.error
+ ),
ui_run: job.status?.ui_url,
uid: job.metadata.uid,
updated: new Date(job.status?.last_update),
From 72f2977874842637762b2ded4d35b3db8125d570 Mon Sep 17 00:00:00 2001
From: illia-prokopchuk <78905712+illia-prokopchuk@users.noreply.github.com>
Date: Tue, 12 Nov 2024 10:53:10 +0200
Subject: [PATCH 23/26] Fix [Feature store, Models] Label editing action issues
(#2872)
---
src/common/TabsSlider/TabsSlider.js | 10 ++++++----
src/components/Details/Details.js | 3 ++-
src/components/ModelsPage/Models/Models.js | 4 ++--
src/elements/DetailsInfoItem/DetailsInfoItem.js | 11 ++---------
.../DetailsInfoItemChip/DetailsInfoItemChip.js | 5 ++++-
5 files changed, 16 insertions(+), 17 deletions(-)
diff --git a/src/common/TabsSlider/TabsSlider.js b/src/common/TabsSlider/TabsSlider.js
index 2e4c82194..9d58c74ae 100644
--- a/src/common/TabsSlider/TabsSlider.js
+++ b/src/common/TabsSlider/TabsSlider.js
@@ -25,7 +25,7 @@ import classnames from 'classnames'
import { Tip } from 'igz-controls/components'
import { SLIDER_STYLE_1, SLIDER_STYLE_2, SLIDER_TABS } from '../../types'
-import { generateUrlFromRouterPath } from '../../utils/link-helper.util'
+import { generateUrlFromRouterPath } from '../../utils/link-helper.util'
import { ReactComponent as Arrow } from 'igz-controls/images/arrow.svg'
@@ -117,8 +117,8 @@ const TabsSlider = ({
} else if (
tabsRef.current?.scrollWidth <
tabsWrapperRef.current?.offsetWidth / menuOffsetHalfWidth +
- selectedTabNode?.offsetLeft +
- selectedTabNode?.offsetWidth
+ selectedTabNode?.offsetLeft +
+ selectedTabNode?.offsetWidth
) {
setScrolledWidth(tabsRef.current?.scrollWidth - tabsWrapperRef.current?.offsetWidth)
setRightArrowDisabled(true)
@@ -189,7 +189,9 @@ const TabsSlider = ({
onSelectTab(tab)}
key={tab.id}
>
diff --git a/src/components/Details/Details.js b/src/components/Details/Details.js
index 64829781e..d4f57f2b4 100644
--- a/src/components/Details/Details.js
+++ b/src/components/Details/Details.js
@@ -198,7 +198,8 @@ const Details = ({
if (
formRef.current &&
detailsStore.changes.counter === 0 &&
- !isEqual(pickBy(formInitialValues), pickBy(formRef.current.getState()?.values))
+ !isEqual(pickBy(formInitialValues), pickBy(formRef.current.getState()?.values)) &&
+ !formRef.current.getState()?.active
) {
formRef.current.restart(formInitialValues)
}
diff --git a/src/components/ModelsPage/Models/Models.js b/src/components/ModelsPage/Models/Models.js
index 97f361414..65acdd68e 100644
--- a/src/components/ModelsPage/Models/Models.js
+++ b/src/components/ModelsPage/Models/Models.js
@@ -297,8 +297,8 @@ const Models = ({ fetchModelFeatureVector }) => {
return {
...state,
[modelIdentifier]: {
- content: sortListByDate(content[model.db_key ?? model.key], 'updated', false).map(artifact =>
- createModelsRowData(artifact, params.projectName)
+ content: sortListByDate(content[model.db_key ?? model.key], 'updated', false).map(
+ artifact => createModelsRowData(artifact, params.projectName)
)
},
error: null,
diff --git a/src/elements/DetailsInfoItem/DetailsInfoItem.js b/src/elements/DetailsInfoItem/DetailsInfoItem.js
index 08f06cdd9..10be72f43 100644
--- a/src/elements/DetailsInfoItem/DetailsInfoItem.js
+++ b/src/elements/DetailsInfoItem/DetailsInfoItem.js
@@ -219,10 +219,7 @@ const DetailsInfoItem = React.forwardRef(
className="details-item__data details-item__link"
template={}
>
-
+
{func}
@@ -234,11 +231,7 @@ const DetailsInfoItem = React.forwardRef(
if (!infoItem) return null
return item.link ? (
-
+
}>{infoItem}
) : (
diff --git a/src/elements/DetailsInfoItemChip/DetailsInfoItemChip.js b/src/elements/DetailsInfoItemChip/DetailsInfoItemChip.js
index d0a45b2ed..5e5b78c70 100644
--- a/src/elements/DetailsInfoItemChip/DetailsInfoItemChip.js
+++ b/src/elements/DetailsInfoItemChip/DetailsInfoItemChip.js
@@ -24,7 +24,10 @@ import { useDispatch, useSelector } from 'react-redux'
import { RoundedIcon, FormChipCell, FormOnChange } from 'igz-controls/components'
-import { getValidationRules, getInternalLabelsValidationRule } from 'igz-controls/utils/validation.util'
+import {
+ getValidationRules,
+ getInternalLabelsValidationRule
+} from 'igz-controls/utils/validation.util'
import { detailsInfoActions } from '../../components/DetailsInfo/detailsInfoReducer'
import detailsActions from '../../actions/details'
From 9d7fc72ed6f40dbca89b26e9dca4fa0f62f7e0ae Mon Sep 17 00:00:00 2001
From: mariana-furyk <58301139+mariana-furyk@users.noreply.github.com>
Date: Tue, 12 Nov 2024 10:53:42 +0200
Subject: [PATCH 24/26] Impl [Jobs] Revamp Jobs page filters bar (#2817)
---------
Co-authored-by: Olena Zhelnytska
---
src/common/NameFilter/NameFilter.js | 8 +-
src/components/ActionBar/ActionBar.js | 33 +-
.../FilterMenuModal/FilterMenuModal.js | 4 +-
src/components/JobWizard/JobWizard.js | 14 +-
src/components/Jobs/Jobs.js | 232 +++++++++----
.../Jobs/MonitorJobs/JobsFilters.js | 60 ++++
.../Jobs/MonitorJobs/MonitorJobs.js | 194 +++--------
.../Jobs/MonitorJobs/monitorJobs.util.js | 80 +++--
.../Jobs/MonitorWorkflows/MonitorWorkflows.js | 77 ++---
.../Jobs/MonitorWorkflows/WorkflowsFilters.js | 61 ++++
.../MonitorWorkflows/monitorWorkflows.util.js | 39 +--
.../Jobs/ScheduledJobs/ScheduledJobs.js | 109 ++-----
.../ScheduledJobs/ScheduledJobsFilters.js | 56 ++++
.../Jobs/ScheduledJobs/scheduledJobs.util.js | 34 --
src/components/Jobs/jobs.util.js | 6 +-
.../ModelsPage/Models/ModelsView.js | 2 +-
.../JobsMonitoring/JobsMonitoringFilters.js | 7 +-
.../ProjectsJobsMonitoring.js | 276 +++-------------
.../ScheduledMonitoring.js | 2 +-
.../ScheduledMonitoringFilters.js | 7 +-
.../WorkflowsMonitoringFilters.js | 7 +-
src/components/ProjectsPage/projects.util.js | 24 +-
src/elements/JobsTable/JobsTable.js | 38 ++-
.../ProjectStatistics/ProjectStatistics.js | 74 ++++-
.../ScheduledJobsTable/ScheduledJobsTable.js | 6 +-
src/hooks/useJobsPageData.js | 265 +++++++++++++++
src/reducers/filtersReducer.js | 70 +++-
src/scss/main.scss | 18 +-
src/utils/getNoDataMessage.js | 30 +-
src/utils/getState.js | 10 +-
src/utils/jobs.util.js | 39 +++
tests/features/common-tools/common-consts.js | 15 +-
.../common/page-objects/info-pane.po.js | 2 +
.../page-objects/jobs-and-workflows.po.js | 76 +++--
tests/features/jobsAndWorkflows.feature | 307 +++++++++++++-----
tests/features/projectMonitoring.feature | 19 +-
tests/features/quickActions.feature | 8 +-
tests/mockServer/mock.js | 20 +-
38 files changed, 1457 insertions(+), 872 deletions(-)
create mode 100644 src/components/Jobs/MonitorJobs/JobsFilters.js
create mode 100644 src/components/Jobs/MonitorWorkflows/WorkflowsFilters.js
create mode 100644 src/components/Jobs/ScheduledJobs/ScheduledJobsFilters.js
delete mode 100644 src/components/Jobs/ScheduledJobs/scheduledJobs.util.js
create mode 100644 src/hooks/useJobsPageData.js
diff --git a/src/common/NameFilter/NameFilter.js b/src/common/NameFilter/NameFilter.js
index cd7b6a975..49282edbf 100644
--- a/src/common/NameFilter/NameFilter.js
+++ b/src/common/NameFilter/NameFilter.js
@@ -28,7 +28,7 @@ import { ReactComponent as SearchIcon } from 'igz-controls/images/search.svg'
import './nameFilter.scss'
-const NameFilter = ({ applyChanges, filterMenuName= '' }) => {
+const NameFilter = ({ applyChanges, filterMenuName = '' }) => {
const { input } = useField(NAME_FILTER)
const dispatch = useDispatch()
@@ -36,7 +36,9 @@ const NameFilter = ({ applyChanges, filterMenuName= '' }) => {
if (event.keyCode === KEY_CODES.ENTER) {
applyChanges(event.target.value)
if (filterMenuName) {
- dispatch(setFiltersValues({ name: filterMenuName, value: { [NAME_FILTER]: event.target.value } }))
+ dispatch(
+ setFiltersValues({ name: filterMenuName, value: { [NAME_FILTER]: event.target.value } })
+ )
} else {
dispatch(setFilters({ [NAME_FILTER]: event.target.value }))
}
@@ -54,7 +56,7 @@ const NameFilter = ({ applyChanges, filterMenuName= '' }) => {
}
return (
-
+
)}
{DATES_FILTER in filterMenu && !filtersConfig[DATES_FILTER].hidden && (
-