From 2954f1a9a4a64dff4dc7b631fc4c0a9df6ed9787 Mon Sep 17 00:00:00 2001 From: rnetser Date: Sun, 13 Oct 2024 16:54:22 +0300 Subject: [PATCH 01/10] update replicas rh-pre-commit.version: 2.3.1 rh-pre-commit.check-secrets: ENABLED --- .../ODH/ODHDashboard/ODHDataScienceProject/ModelServer.resource | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHDataScienceProject/ModelServer.resource b/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHDataScienceProject/ModelServer.resource index 2333463d4..dd0ae156d 100644 --- a/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHDataScienceProject/ModelServer.resource +++ b/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHDataScienceProject/ModelServer.resource @@ -73,7 +73,7 @@ Create Model Server Set Replicas Number With Buttons [Documentation] Sets the number of replicas for the model serving pod [Arguments] ${number} - ${current}= Get Element Attribute ${REPLICAS_COUNT_XP} value + ${current}= Get Value css=[id="model-server-replicas"] ${difference}= Evaluate int(${number})-int(${current}) ${op}= Set Variable plus IF ${difference}<${0} From 02fefdf7591b48010eb3cdb4dddb5fbd7c235ba6 Mon Sep 17 00:00:00 2001 From: rnetser Date: Sun, 13 Oct 2024 17:00:32 +0300 Subject: [PATCH 02/10] update replicas rh-pre-commit.version: 2.3.1 rh-pre-commit.check-secrets: ENABLED --- .../ODHDashboard/ODHDataScienceProject/ModelServer.resource | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHDataScienceProject/ModelServer.resource b/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHDataScienceProject/ModelServer.resource index dd0ae156d..e36698894 100644 --- a/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHDataScienceProject/ModelServer.resource +++ b/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHDataScienceProject/ModelServer.resource @@ -24,7 +24,7 @@ ${SERVING_MODEL_SERVERS_SIDE_MENU}= xpath=//span[text()='Models and model ser ${TOKEN_AUTH_CHECKBOX_XP}= xpath://input[@id="alt-form-checkbox-auth"] ${ADD_SERVICE_ACCOUNT_BUTTON}= xpath://button[text()='Add a service account'] ${SERVICE_ACCOUNT_INPUT}= xpath://input[@data-testid='service-account-form-name'] -${REPLICAS_COUNT_XP}= xpath://section[@class='pf-v5-c-form__section']//span[@class='pf-v5-c-form-control']/input +${REPLICAS_COUNT_XP}= css=[id="model-server-replicas"] ${PROJECT_SELECTOR_XP}= xpath://main[contains(@id, 'dashboard-page-main')]//*[@data-testid="project-selector-dropdown"] @@ -73,7 +73,7 @@ Create Model Server Set Replicas Number With Buttons [Documentation] Sets the number of replicas for the model serving pod [Arguments] ${number} - ${current}= Get Value css=[id="model-server-replicas"] + ${current}= Get Value ${REPLICAS_COUNT_XP} ${difference}= Evaluate int(${number})-int(${current}) ${op}= Set Variable plus IF ${difference}<${0} @@ -87,7 +87,7 @@ Set Replicas Number With Buttons Click Minus Button END END - ${current}= Get Element Attribute ${REPLICAS_COUNT_XP} value + ${current}= Get Value ${REPLICAS_COUNT_XP} Should Be Equal As Integers ${current} ${number} Set Server Size From fa88657712d816feea2e1463c55c66c21f6f7a70 Mon Sep 17 00:00:00 2001 From: rnetser Date: Mon, 14 Oct 2024 10:28:30 +0300 Subject: [PATCH 03/10] fix ui token rh-pre-commit.version: 2.3.1 rh-pre-commit.check-secrets: ENABLED --- .../ODHDashboard/ODHDataScienceProject/ModelServer.resource | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHDataScienceProject/ModelServer.resource b/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHDataScienceProject/ModelServer.resource index e36698894..fc5b5d54c 100644 --- a/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHDataScienceProject/ModelServer.resource +++ b/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHDataScienceProject/ModelServer.resource @@ -213,8 +213,8 @@ Get Model Serving Access Token via UI ... TODO: There can be multiple tokens defined for each model server, handle this case as well [Arguments] ${service_account_name}=default-name ${single_model}=${FALSE} ${model_name}=${NONE} IF ${single_model} - # Expand the model - SeleniumLibrary.Click Button xpath: //a[text()='${model_name}']/parent::div/parent::td[@data-label='Name']/preceding-sibling::td/button # robocop: off=line-too-long + # Expand the model + SeleniumLibrary.Click Button xpath: //a[text()='${model_name}']/ancestor::td/preceding-sibling::td/button # robocop: off=line-too-long ${token}= Get Single Model Token ${service_account_name} ELSE SeleniumLibrary.Wait Until Page Contains Element xpath://td[@data-label="Tokens"]/button @@ -228,7 +228,7 @@ Get Single Model Token [Documentation] Gets the (Single Model) Token of an specific Service Account [Arguments] ${service_account_name} ${token}= Get Element Attribute - ... xpath://div[text()='${service_account_name}']/parent::td[@data-label='Token Name']/following-sibling::td[@data-label='Token Secret']//input value + ... xpath://div[text()='${service_account_name}']/../../parent::td[@data-label='Token Name']/following-sibling::td[@data-label="Token Secret"]//input value RETURN ${token} Click Plus Button From b3516831edc0a7a02ab90afb52d78a46da0c3825 Mon Sep 17 00:00:00 2001 From: rnetser Date: Mon, 14 Oct 2024 11:59:43 +0300 Subject: [PATCH 04/10] fix sr dropdown rh-pre-commit.version: 2.3.1 rh-pre-commit.check-secrets: ENABLED --- .../ODHDataScienceProject/ModelServer.resource | 2 +- .../Page/ODH/ODHDashboard/ODHModelServing.resource | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHDataScienceProject/ModelServer.resource b/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHDataScienceProject/ModelServer.resource index fc5b5d54c..065219971 100644 --- a/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHDataScienceProject/ModelServer.resource +++ b/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHDataScienceProject/ModelServer.resource @@ -25,7 +25,7 @@ ${TOKEN_AUTH_CHECKBOX_XP}= xpath://input[@id="alt-form-checkbox-auth"] ${ADD_SERVICE_ACCOUNT_BUTTON}= xpath://button[text()='Add a service account'] ${SERVICE_ACCOUNT_INPUT}= xpath://input[@data-testid='service-account-form-name'] ${REPLICAS_COUNT_XP}= css=[id="model-server-replicas"] -${PROJECT_SELECTOR_XP}= xpath://main[contains(@id, 'dashboard-page-main')]//*[@data-testid="project-selector-dropdown"] +${PROJECT_SELECTOR_XP}= xpath://main[contains(@id, 'dashboard-page-main')]//*[@data-testid="project-selector-toggle"] *** Keywords *** diff --git a/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHModelServing.resource b/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHModelServing.resource index 66a86b725..ada9dae9c 100644 --- a/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHModelServing.resource +++ b/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHModelServing.resource @@ -20,7 +20,7 @@ ${S3_BUCKET_DC_INPUT_XP}= xpath=//input[@aria-label="Field list AWS_S3_BUCKE ${S3_DEFAULT_BUCKET}= ods-ci-s3 ${MS_TABLE_PROJECT}= /../../td[@data-label="Project"] ${MS_TABLE_STATUS}= /../../td[@data-label="Status"] -${MS_TABLE_ENDPOINT}= /../../td[@data-label="Inference endpoint"] +${MS_TABLE_ENDPOINT}= /../td[@data-label="Inference endpoint"] ${MS_TABLE_ENDPOINT_INPUT}= ${MS_TABLE_ENDPOINT}//div[@class="pf-v5-c-clipboard-copy"]//input ${MS_TABLE_STATUS_SUCCESS}= //span[contains(@class,"pf-v5-c-icon__content")][contains(@class,"pf-m-success")] ${MS_TABLE_STATUS_FAILURE}= //span[contains(@class,"pf-v5-c-icon__content")][contains(@class,"pf-m-danger")] @@ -209,7 +209,7 @@ Get Model Route Via UI [Documentation] Grabs the serving route (URL) of an already deployed model from the Model Serving page. [Arguments] ${model_name} # TODO: Open model serving home page if needed? - ${route_xpath}= Set Variable xpath://div[.="${model_name} "]${MS_TABLE_ENDPOINT_INPUT} + ${route_xpath}= Set Variable xpath://a[text()='${model_name}']/ancestor::td${MS_TABLE_ENDPOINT_INPUT} ${loaded}= Run Keyword And Return Status SeleniumLibrary.Wait Until Page Contains Element ${route_xpath} timeout=15s IF ${loaded} == ${FALSE} Log message=Model Route was not loaded in UI (RHOAIENG-1919). Trying refreshing! level=WARN @@ -486,8 +486,9 @@ Set Model Server Runtime ... and select the given runtime [Arguments] ${runtime}=Caikit TGIS Page Should Contain Element ${KSERVE_RUNTIME_DROPDOWN} + Sleep 5s Click Element ${KSERVE_RUNTIME_DROPDOWN} - Click Element ${KSERVE_RUNTIME_DROPDOWN}/..//span[contains(text(),"${runtime}")] + Click Element ${KSERVE_RUNTIME_DROPDOWN}/parent::div//span[contains(text(),"${runtime}")] Get Kserve Inference Host Via UI [Documentation] Fetches the host of the model's URL from the Data Science Project UI From ac9ab577c6c569f525b1e4826a10a4c4d4bf9bfb Mon Sep 17 00:00:00 2001 From: rnetser Date: Mon, 14 Oct 2024 12:39:34 +0300 Subject: [PATCH 05/10] fix sr dropdown rh-pre-commit.version: 2.3.1 rh-pre-commit.check-secrets: ENABLED --- .../Page/ODH/ODHDashboard/ODHModelServing.resource | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHModelServing.resource b/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHModelServing.resource index ada9dae9c..c4ead8c76 100644 --- a/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHModelServing.resource +++ b/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHModelServing.resource @@ -273,7 +273,7 @@ Get Model Inference ${kserve}= Run Keyword And Return Status SeleniumLibrary.Page Should Contain ... Single-model serving enabled ${curl_cmd}= Set Variable curl -s ${url} -d ${inference_input} - IF ${token_auth} + IF ${token_auth} and "${token}" == "${NONE}" IF "${project_title}" == "${NONE}" ${project_title}= Get Model Project ${model_name} END @@ -281,6 +281,8 @@ Get Model Inference ${token}= Get Access Token via UI ${project_title} service_account_name=${service_account_name} ... single_model=${kserve} model_name=${model_name} END + END + IF "${token}" != "${NONE}" ${curl_cmd}= Catenate ${curl_cmd} -H "Authorization: Bearer ${token}" END IF ${kserve} @@ -486,9 +488,11 @@ Set Model Server Runtime ... and select the given runtime [Arguments] ${runtime}=Caikit TGIS Page Should Contain Element ${KSERVE_RUNTIME_DROPDOWN} - Sleep 5s + Sleep 1s Click Element ${KSERVE_RUNTIME_DROPDOWN} - Click Element ${KSERVE_RUNTIME_DROPDOWN}/parent::div//span[contains(text(),"${runtime}")] + ${runtime_xpath}= Set Variable ${KSERVE_RUNTIME_DROPDOWN}/parent::div//span[contains(text(),"${runtime}")] + Wait Until Page Contains Element ${runtime_xpath} + Click Element ${runtime_xpath} Get Kserve Inference Host Via UI [Documentation] Fetches the host of the model's URL from the Data Science Project UI From 438f1241d284cfe13e8f31ad2574838bef9eed57 Mon Sep 17 00:00:00 2001 From: rnetser Date: Mon, 14 Oct 2024 13:48:34 +0300 Subject: [PATCH 06/10] fix delete all projects rh-pre-commit.version: 2.3.1 rh-pre-commit.check-secrets: ENABLED --- .../ODH/ODHDashboard/ODHModelServing.resource | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHModelServing.resource b/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHModelServing.resource index c4ead8c76..353da4744 100644 --- a/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHModelServing.resource +++ b/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHModelServing.resource @@ -389,18 +389,11 @@ Clean Up Model Serving Page [Documentation] Deletes all currently deployed models, if any are present. # Returns an empty list if no matching elements found Switch Model Serving Project project_name=All projects - ${projects}= Get WebElements xpath://table/tbody/tr/td[@data-label="Project"] - FOR ${project} IN @{projects} - ${project}= Get Text ${project} - @{project description}= Split String ${project} - Switch Model Serving Project ${project description}[0] - ${models}= Get WebElements xpath://table/tbody/tr/td[@data-label="Name"]/div/a - FOR ${model} IN @{models} - ${model}= Get Text ${model} - Delete Model Via UI ${model} - Sleep 1s - END - Switch Model Serving Project project_name=All projects + ${models}= Get WebElements xpath://table/tbody/tr/td[@data-label="Name"]/div/a + FOR ${model} IN @{models} + ${model}= Get Text ${model} + Delete Model Via UI ${model} + Sleep 1s END Add Namespace To ServiceMeshMemberRoll From c2e21e729506ac60b2ff5b8eaaef60cdeec12781 Mon Sep 17 00:00:00 2001 From: rnetser Date: Mon, 14 Oct 2024 13:57:30 +0300 Subject: [PATCH 07/10] fix sr dropdown rh-pre-commit.version: 2.3.1 rh-pre-commit.check-secrets: ENABLED --- .../Resources/Page/ODH/ODHDashboard/ODHModelServing.resource | 1 - 1 file changed, 1 deletion(-) diff --git a/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHModelServing.resource b/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHModelServing.resource index 353da4744..280c25b1a 100644 --- a/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHModelServing.resource +++ b/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHModelServing.resource @@ -481,7 +481,6 @@ Set Model Server Runtime ... and select the given runtime [Arguments] ${runtime}=Caikit TGIS Page Should Contain Element ${KSERVE_RUNTIME_DROPDOWN} - Sleep 1s Click Element ${KSERVE_RUNTIME_DROPDOWN} ${runtime_xpath}= Set Variable ${KSERVE_RUNTIME_DROPDOWN}/parent::div//span[contains(text(),"${runtime}")] Wait Until Page Contains Element ${runtime_xpath} From 8eea7d45055fa0bfef208e06718ec86de8f468fe Mon Sep 17 00:00:00 2001 From: rnetser Date: Mon, 14 Oct 2024 15:13:04 +0300 Subject: [PATCH 08/10] sfix replicas modelmesh rh-pre-commit.version: 2.3.1 rh-pre-commit.check-secrets: ENABLED --- .../ODHDashboard/ODHDataScienceProject/ModelServer.resource | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHDataScienceProject/ModelServer.resource b/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHDataScienceProject/ModelServer.resource index 065219971..f85cee475 100644 --- a/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHDataScienceProject/ModelServer.resource +++ b/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHDataScienceProject/ModelServer.resource @@ -24,7 +24,7 @@ ${SERVING_MODEL_SERVERS_SIDE_MENU}= xpath=//span[text()='Models and model ser ${TOKEN_AUTH_CHECKBOX_XP}= xpath://input[@id="alt-form-checkbox-auth"] ${ADD_SERVICE_ACCOUNT_BUTTON}= xpath://button[text()='Add a service account'] ${SERVICE_ACCOUNT_INPUT}= xpath://input[@data-testid='service-account-form-name'] -${REPLICAS_COUNT_XP}= css=[id="model-server-replicas"] +${REPLICAS_COUNT_XP}= css=[aria-label="model server replicas number input"] ${PROJECT_SELECTOR_XP}= xpath://main[contains(@id, 'dashboard-page-main')]//*[@data-testid="project-selector-toggle"] @@ -43,8 +43,8 @@ Create Model Server SeleniumLibrary.Click Button Add model server SeleniumLibrary.Wait Until Page Contains Element //span[.="Add model server"] Set Model Server Name ${server_name} - Set Replicas Number With Buttons ${no_replicas} Set Model Server Runtime ${runtime} + Set Replicas Number With Buttons ${no_replicas} Set Server Size ${server_size} IF ${no_gpus} > ${0} ${gpu_enabled}= Run Keyword And Return Status Verify GPU Selector Is Usable From 394ddc0388c8ec5bedd9cbb15f1d13a9855dbe52 Mon Sep 17 00:00:00 2001 From: rnetser Date: Mon, 14 Oct 2024 15:41:22 +0300 Subject: [PATCH 09/10] remove spaces rh-pre-commit.version: 2.3.1 rh-pre-commit.check-secrets: ENABLED --- .../ODH/ODHDashboard/ODHDataScienceProject/ModelServer.resource | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHDataScienceProject/ModelServer.resource b/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHDataScienceProject/ModelServer.resource index f85cee475..658107a81 100644 --- a/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHDataScienceProject/ModelServer.resource +++ b/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHDataScienceProject/ModelServer.resource @@ -213,7 +213,7 @@ Get Model Serving Access Token via UI ... TODO: There can be multiple tokens defined for each model server, handle this case as well [Arguments] ${service_account_name}=default-name ${single_model}=${FALSE} ${model_name}=${NONE} IF ${single_model} - # Expand the model + # Expand the model SeleniumLibrary.Click Button xpath: //a[text()='${model_name}']/ancestor::td/preceding-sibling::td/button # robocop: off=line-too-long ${token}= Get Single Model Token ${service_account_name} ELSE From 4adf69043a83d54dc2fd84d8d8477214f97c7374 Mon Sep 17 00:00:00 2001 From: rnetser Date: Mon, 14 Oct 2024 19:47:45 +0300 Subject: [PATCH 10/10] fix success rh-pre-commit.version: 2.3.1 rh-pre-commit.check-secrets: ENABLED --- .../ODH/ODHDashboard/ODHModelServing.resource | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHModelServing.resource b/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHModelServing.resource index 280c25b1a..6e82c7309 100644 --- a/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHModelServing.resource +++ b/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHModelServing.resource @@ -19,7 +19,7 @@ ${S3_REGION_DC_INPUT_XP}= xpath=//input[@aria-label="Field list AWS_DEF ${S3_BUCKET_DC_INPUT_XP}= xpath=//input[@aria-label="Field list AWS_S3_BUCKET"] ${S3_DEFAULT_BUCKET}= ods-ci-s3 ${MS_TABLE_PROJECT}= /../../td[@data-label="Project"] -${MS_TABLE_STATUS}= /../../td[@data-label="Status"] +${MS_TABLE_STATUS}= /../td[@data-label="Status"] ${MS_TABLE_ENDPOINT}= /../td[@data-label="Inference endpoint"] ${MS_TABLE_ENDPOINT_INPUT}= ${MS_TABLE_ENDPOINT}//div[@class="pf-v5-c-clipboard-copy"]//input ${MS_TABLE_STATUS_SUCCESS}= //span[contains(@class,"pf-v5-c-icon__content")][contains(@class,"pf-m-success")] @@ -179,12 +179,12 @@ Verify Model Status [Arguments] ${model_name} ${expected_status}=success IF "${expected_status}"=="success" SeleniumLibrary.Wait Until Page Contains Element - ... //div[.="${model_name} "]${MS_TABLE_STATUS}${MS_TABLE_STATUS_SUCCESS} timeout=2m - Page Should Not Contain Element //div[.="${model_name} "]${MS_TABLE_STATUS}${MS_TABLE_STATUS_FAILURE} + ... //a[text()='test-model']/ancestor::td${MS_TABLE_STATUS}${MS_TABLE_STATUS_SUCCESS} timeout=2m + Page Should Not Contain Element //a[text()='test-model']/ancestor::td${MS_TABLE_STATUS}${MS_TABLE_STATUS_FAILURE} ELSE SeleniumLibrary.Wait Until Page Contains Element - ... //div[.="${model_name} "]${MS_TABLE_STATUS}${MS_TABLE_STATUS_FAILURE} timeout=2m - Page Should Not Contain Element //div[.="${model_name} "]${MS_TABLE_STATUS}${MS_TABLE_STATUS_SUCCESS} + ... //a[text()='test-model']/ancestor::td${MS_TABLE_STATUS}${MS_TABLE_STATUS_FAILURE} timeout=2m + Page Should Not Contain Element //a[text()='test-model']/ancestor::td${MS_TABLE_STATUS}${MS_TABLE_STATUS_SUCCESS} END Delete Model Via UI @@ -389,11 +389,18 @@ Clean Up Model Serving Page [Documentation] Deletes all currently deployed models, if any are present. # Returns an empty list if no matching elements found Switch Model Serving Project project_name=All projects - ${models}= Get WebElements xpath://table/tbody/tr/td[@data-label="Name"]/div/a - FOR ${model} IN @{models} - ${model}= Get Text ${model} - Delete Model Via UI ${model} - Sleep 1s + ${projects}= Get WebElements xpath://table/tbody/tr/td[@data-label="Project"] + FOR ${project} IN @{projects} + ${project}= Get Text ${project} + @{project description}= Split String ${project} + Switch Model Serving Project ${project description}[0] + ${models}= Get WebElements xpath://table/tbody/tr/td[@data-label="Name"]/div/a + FOR ${model} IN @{models} + ${model}= Get Text ${model} + Delete Model Via UI ${model} + Sleep 1s + END + Switch Model Serving Project project_name=All projects END Add Namespace To ServiceMeshMemberRoll