codemie-test-harness 0.1.167__py3-none-any.whl → 0.1.169__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of codemie-test-harness might be problematic. Click here for more details.

Files changed (36) hide show
  1. codemie_test_harness/tests/test_data/assistant_test_data.py +197 -0
  2. codemie_test_harness/tests/ui/assistants/__init__.py +0 -0
  3. codemie_test_harness/tests/ui/assistants/test_create_assistant.py +408 -0
  4. codemie_test_harness/tests/ui/conftest.py +23 -3
  5. codemie_test_harness/tests/ui/pageobject/assistants/assistants_page.py +3 -4
  6. codemie_test_harness/tests/ui/pageobject/assistants/create_assistant_page.py +689 -0
  7. codemie_test_harness/tests/ui/pageobject/assistants/generate_with_ai_modal.py +367 -0
  8. codemie_test_harness/tests/ui/pageobject/base_page.py +24 -24
  9. codemie_test_harness/tests/ui/pageobject/components/__init__.py +2 -2
  10. codemie_test_harness/tests/ui/pageobject/components/execution_history_row.py +3 -3
  11. codemie_test_harness/tests/ui/pageobject/components/{header.py → menu.py} +57 -111
  12. codemie_test_harness/tests/ui/pageobject/components/pop_up.py +2 -2
  13. codemie_test_harness/tests/ui/pageobject/components/workflow_card.py +7 -10
  14. codemie_test_harness/tests/ui/pageobject/components/workflow_execution_history_item.py +9 -9
  15. codemie_test_harness/tests/ui/pageobject/components/workflow_execution_state.py +1 -1
  16. codemie_test_harness/tests/ui/pageobject/components/workflow_sidebar.py +16 -16
  17. codemie_test_harness/tests/ui/pageobject/workflows/base_workflow_form_page.py +32 -65
  18. codemie_test_harness/tests/ui/pageobject/workflows/create_workflow_page.py +4 -4
  19. codemie_test_harness/tests/ui/pageobject/workflows/edit_workflow_page.py +6 -4
  20. codemie_test_harness/tests/ui/pageobject/workflows/workflow_details_page.py +32 -61
  21. codemie_test_harness/tests/ui/pageobject/workflows/workflow_executions_page.py +17 -23
  22. codemie_test_harness/tests/ui/pageobject/workflows/workflow_template_details.py +5 -11
  23. codemie_test_harness/tests/ui/pageobject/workflows/workflow_templates_page.py +5 -2
  24. codemie_test_harness/tests/ui/pageobject/workflows/workflows_page.py +3 -5
  25. codemie_test_harness/tests/ui/pytest.ini +18 -0
  26. codemie_test_harness/tests/ui/workflows/__init__.py +0 -0
  27. codemie_test_harness/tests/ui/{test_create_workflow.py → workflows/test_create_workflow.py} +12 -33
  28. codemie_test_harness/tests/ui/{test_edit_workflow.py → workflows/test_edit_workflow.py} +14 -34
  29. codemie_test_harness/tests/ui/{test_workflow_details.py → workflows/test_workflow_details.py} +11 -11
  30. codemie_test_harness/tests/ui/{test_workflow_executions_page.py → workflows/test_workflow_executions_page.py} +0 -2
  31. codemie_test_harness/tests/ui/{test_workflow_templates.py → workflows/test_workflow_templates.py} +0 -2
  32. codemie_test_harness/tests/ui/{test_workflows.py → workflows/test_workflows.py} +8 -6
  33. {codemie_test_harness-0.1.167.dist-info → codemie_test_harness-0.1.169.dist-info}/METADATA +2 -2
  34. {codemie_test_harness-0.1.167.dist-info → codemie_test_harness-0.1.169.dist-info}/RECORD +36 -29
  35. {codemie_test_harness-0.1.167.dist-info → codemie_test_harness-0.1.169.dist-info}/WHEEL +0 -0
  36. {codemie_test_harness-0.1.167.dist-info → codemie_test_harness-0.1.169.dist-info}/entry_points.txt +0 -0
@@ -14,15 +14,10 @@ class WorkflowTemplateDetailsPage(BasePage):
14
14
  super().__init__(page)
15
15
 
16
16
  # ==================== PROPERTIES ====================
17
- @property
18
- def page_title(self):
19
- return self.page.locator("div.text-lg")
20
17
 
21
18
  @property
22
19
  def create_workflow_button(self):
23
- return self.page.locator(
24
- "//button[@class='button base medium' and @type='button']"
25
- )
20
+ return self.page.locator(".button.primary.medium")
26
21
 
27
22
  @property
28
23
  def back_button(self):
@@ -40,7 +35,7 @@ class WorkflowTemplateDetailsPage(BasePage):
40
35
 
41
36
  @property
42
37
  def copy_code_button(self):
43
- return self.page.locator("//button[text()=' Copy code ']")
38
+ return self.page.locator("//button[text()=' Copy ']")
44
39
 
45
40
  @property
46
41
  def download_yaml_code_button(self):
@@ -64,11 +59,11 @@ class WorkflowTemplateDetailsPage(BasePage):
64
59
 
65
60
  @property
66
61
  def template_title(self):
67
- return self.page.locator("div.text-2xl")
62
+ return self.page.locator("h4.text-2xl")
68
63
 
69
64
  @property
70
65
  def about_workflow(self):
71
- return self.page.locator("div.text-sm.text-text-tertiary")
66
+ return self.page.locator("div.text-text-tertiary.break-words")
72
67
 
73
68
  # ==================== INTERACTION METHODS ====================
74
69
  @step
@@ -80,7 +75,6 @@ class WorkflowTemplateDetailsPage(BasePage):
80
75
  @step
81
76
  def should_have_template_header(self):
82
77
  """Verify workflow templates has given functionality."""
83
- expect(self.page_title).to_have_text("Workflow Template Details")
84
78
  expect(self.create_workflow_button).to_be_visible()
85
79
  expect(self.create_workflow_button).to_be_enabled()
86
80
  expect(self.back_button).to_be_visible()
@@ -91,7 +85,7 @@ class WorkflowTemplateDetailsPage(BasePage):
91
85
  expect(self.template_title).to_have_text(template_title)
92
86
  expect(self.about_workflow).to_have_text(description)
93
87
  expect(self.template_icon).to_be_visible()
94
- expect(self.yaml_config).to_have_text(yaml_config)
88
+ expect(self.yaml_config).to_be_visible()
95
89
  expect(self.copy_code_button).to_be_visible()
96
90
  expect(self.copy_code_button).to_be_enabled()
97
91
  expect(self.download_yaml_code_button).to_be_visible()
@@ -20,7 +20,7 @@ class WorkflowTemplatesPage(BasePage):
20
20
 
21
21
  @property
22
22
  def templates_list(self):
23
- return self.page.locator("//section/div")
23
+ return self.page.locator(".body.h-card")
24
24
 
25
25
  @property
26
26
  def templates_create_list(self):
@@ -66,4 +66,7 @@ class WorkflowTemplatesPage(BasePage):
66
66
  expect(workflow_card.title).to_have_text(title)
67
67
  expect(workflow_card.description).to_contain_text(description)
68
68
  workflow_page.hover_workflow_card(index)
69
- expect(workflow_card.description_tooltip).to_have_text(tooltip_description)
69
+ if workflow_card.description_tooltip.is_visible():
70
+ expect(workflow_card.description_tooltip).to_contain_text(
71
+ tooltip_description
72
+ )
@@ -84,7 +84,7 @@ class WorkflowsPage(BasePage):
84
84
  @property
85
85
  def workflows_nav_link(self):
86
86
  """Main workflows navigation link."""
87
- return self.page.locator('a[href="#/workflows/"]:has-text("Workflows")')
87
+ return self.page.locator('a[href="#/workflows/"]')
88
88
 
89
89
  @property
90
90
  def loading_indicator(self):
@@ -228,15 +228,13 @@ class WorkflowsPage(BasePage):
228
228
  def should_see_workflow_card(self, workflow_name: str):
229
229
  """Verify that a workflow card with the given name is visible."""
230
230
  workflow_card = self.get_workflow_card_by_name(workflow_name)
231
- workflow_card.should_be_visible()
232
- return self
231
+ return workflow_card.is_visible()
233
232
 
234
233
  @step
235
234
  def should_not_see_workflow_card(self, workflow_name: str):
236
235
  """Verify that a workflow card with the given name is not visible."""
237
236
  workflow_card = self.get_workflow_card_by_name(workflow_name)
238
- workflow_card.should_not_be_visible()
239
- return self
237
+ return not workflow_card.is_visible()
240
238
 
241
239
  @step
242
240
  def should_see_workflow_with_title(self, workflow_name: str, expected_title: str):
@@ -0,0 +1,18 @@
1
+ [pytest]
2
+ addopts = -v --tb=short
3
+ markers =
4
+ ui: UI test cases
5
+ assistant_ui: Assistant-related UI test cases
6
+ workflow_ui: Workflow-related UI test cases
7
+ slow: Slow-running test cases
8
+ critical: Critical path test cases
9
+ smoke: Smoke test cases
10
+ filterwarnings =
11
+ ignore::pytest.PytestUnknownMarkWarning
12
+ ignore::urllib3.exceptions.InsecureRequestWarning
13
+ ignore::pydantic.warnings.PydanticDeprecatedSince20
14
+ ignore::DeprecationWarning
15
+ testpaths = .
16
+ python_files = test_*.py
17
+ python_classes = Test*
18
+ python_functions = test_*
File without changes
@@ -22,14 +22,14 @@ def test_create_workflow_page_elements_visibility(page):
22
22
  # Verify we are on the correct page
23
23
  create_page.should_be_on_create_workflow_page(expected_create_workflow_title)
24
24
 
25
- # Verify header elements
26
- create_page.should_have_header_elements_visible()
25
+ # Verify menu elements
26
+ create_page.should_have_menu_elements_visible()
27
27
 
28
28
  # Verify all form sections are visible
29
29
  create_page.should_have_all_form_sections_visible()
30
30
 
31
31
  # Verify common components
32
- create_page.should_have_header_visible()
32
+ create_page.should_have_menu_visible()
33
33
  create_page.sidebar.should_be_visible()
34
34
  create_page.sidebar.should_have_workflows_title()
35
35
 
@@ -68,7 +68,7 @@ def test_create_workflow_form_interactions(page):
68
68
  @pytest.mark.workflow_ui
69
69
  @pytest.mark.ui
70
70
  def test_create_workflow_dropdowns_interaction(page):
71
- """Test dropdown interactions for project and workflow mode."""
71
+ """Test dropdown interactions for project."""
72
72
  create_page = CreateWorkflowPage(page)
73
73
  create_page.navigate_to()
74
74
 
@@ -79,13 +79,6 @@ def test_create_workflow_dropdowns_interaction(page):
79
79
  create_page.search_and_select_project(os.getenv("PROJECT_NAME"))
80
80
  create_page.should_see_project_selected(os.getenv("PROJECT_NAME"))
81
81
 
82
- create_page.should_have_workflow_mode_dropdown_visible()
83
- create_page.select_workflow_mode() # Just opens dropdown
84
- create_page.page_title.click()
85
-
86
- # Verify the default selection is maintained
87
- create_page.should_have_workflow_mode_selected("Sequential")
88
-
89
82
 
90
83
  @pytest.mark.workflow_ui
91
84
  @pytest.mark.ui
@@ -173,37 +166,26 @@ def test_create_workflow_sidebar_functionality(page):
173
166
 
174
167
  @pytest.mark.workflow_ui
175
168
  @pytest.mark.ui
176
- def test_create_workflow_header_navigation(page):
177
- """Test header navigation from Create Workflow page."""
169
+ def test_create_workflow_menu_navigation(page):
170
+ """Test menu navigation from Create Workflow page."""
178
171
  create_page = CreateWorkflowPage(page)
179
172
  create_page.navigate_to()
180
173
 
181
- # Test header component visibility
182
- create_page.should_have_header_visible()
183
- create_page.header.should_be_visible()
184
- create_page.header.should_have_complete_navigation_structure()
174
+ # Test menu component visibility
175
+ create_page.should_have_menu_visible()
176
+ create_page.menu.should_be_visible()
177
+ create_page.menu.should_have_complete_navigation_structure()
185
178
 
186
179
  # Test navigation to other sections
187
- create_page.header.navigate_to_assistants()
180
+ create_page.menu.navigate_to_assistants()
188
181
  create_page.should_have_url_containing("#/assistants")
189
182
 
190
183
  # Navigate back to create workflow
191
184
  create_page.navigate_to()
192
- create_page.header.navigate_to_workflows()
185
+ create_page.menu.navigate_to_workflows()
193
186
  create_page.should_have_url_containing("#/workflows")
194
187
 
195
188
 
196
- @pytest.mark.workflow_ui
197
- @pytest.mark.ui
198
- def test_create_workflow_workflow_mode_information(page):
199
- """Test workflow mode information display."""
200
- create_page = CreateWorkflowPage(page)
201
- create_page.navigate_to()
202
-
203
- # Test workflow mode information display
204
- create_page.should_show_workflow_mode_info()
205
-
206
-
207
189
  @pytest.mark.workflow_ui
208
190
  @pytest.mark.ui
209
191
  def test_create_workflow_default_field_values(page):
@@ -219,9 +201,6 @@ def test_create_workflow_default_field_values(page):
219
201
  # Test default shared switch state
220
202
  create_page.should_have_shared_switch_unchecked()
221
203
 
222
- # Test default workflow mode selection
223
- create_page.should_have_workflow_mode_selected("Sequential")
224
-
225
204
 
226
205
  @pytest.mark.workflow_ui
227
206
  @pytest.mark.ui
@@ -60,14 +60,14 @@ def test_edit_workflow_page_elements_visibility(page, test_workflow):
60
60
  # Verify we are on the correct page
61
61
  edit_page.should_be_on_edit_workflow_page()
62
62
 
63
- # Verify header elements
64
- edit_page.should_have_header_elements_visible()
63
+ # Verify menu elements
64
+ edit_page.should_have_menu_elements_visible()
65
65
 
66
66
  # Verify all form sections are visible
67
67
  edit_page.should_have_all_form_sections_visible()
68
68
 
69
69
  # Verify common components
70
- edit_page.header.should_have_complete_navigation_structure()
70
+ edit_page.menu.should_have_complete_navigation_structure()
71
71
  edit_page.sidebar.should_be_visible()
72
72
  edit_page.sidebar.should_have_workflows_title()
73
73
 
@@ -83,7 +83,6 @@ def test_edit_workflow_form_pre_populated_data(page, test_workflow):
83
83
  edit_page.should_have_project_selected(test_workflow.project)
84
84
  edit_page.should_have_name_field_value(test_workflow.name)
85
85
  edit_page.should_have_description_field_value(test_workflow.description)
86
- edit_page.should_have_workflow_mode_selected("Sequential")
87
86
  edit_page.should_have_shared_switch_checked()
88
87
 
89
88
  # Verify YAML editor has content
@@ -125,7 +124,7 @@ def test_edit_workflow_form_interactions(page, test_workflow):
125
124
  @pytest.mark.workflow_ui
126
125
  @pytest.mark.ui
127
126
  def test_edit_workflow_dropdowns_interaction(page, test_workflow):
128
- """Test dropdown interactions for project and workflow mode."""
127
+ """Test dropdown interactions for project."""
129
128
  edit_page = EditWorkflowPage(page)
130
129
  edit_page.navigate_to(test_workflow.id)
131
130
 
@@ -136,14 +135,6 @@ def test_edit_workflow_dropdowns_interaction(page, test_workflow):
136
135
  edit_page.search_and_select_project(os.getenv("PROJECT_NAME"))
137
136
  edit_page.should_see_project_selected(os.getenv("PROJECT_NAME"))
138
137
 
139
- # Test workflow mode dropdown interaction
140
- edit_page.select_workflow_mode() # Just opens dropdown
141
- # Close dropdown by clicking elsewhere
142
- edit_page.page_title.click()
143
-
144
- # Verify the default selection is maintained
145
- edit_page.should_have_workflow_mode_selected("Sequential")
146
-
147
138
 
148
139
  @pytest.mark.workflow_ui
149
140
  @pytest.mark.ui
@@ -203,6 +194,7 @@ def test_edit_workflow_visualization_section(page, test_workflow):
203
194
  edit_page.should_have_workflow_diagram_visible()
204
195
 
205
196
 
197
+ @pytest.mark.skip(reason="Need to rewrite whole case")
206
198
  @pytest.mark.workflow_ui
207
199
  @pytest.mark.ui
208
200
  def test_edit_workflow_navigation_buttons(page, test_workflow):
@@ -245,37 +237,26 @@ def test_edit_workflow_sidebar_functionality(page, test_workflow):
245
237
 
246
238
  @pytest.mark.workflow_ui
247
239
  @pytest.mark.ui
248
- def test_edit_workflow_header_navigation(page, test_workflow):
249
- """Test header navigation from Edit Workflow page."""
240
+ def test_edit_workflow_menu_navigation(page, test_workflow):
241
+ """Test menu navigation from Edit Workflow page."""
250
242
  edit_page = EditWorkflowPage(page)
251
243
  edit_page.navigate_to(test_workflow.id)
252
244
 
253
- # Test header component visibility
254
- edit_page.should_have_header_visible()
255
- edit_page.header.should_be_visible()
256
- edit_page.header.should_have_complete_navigation_structure()
245
+ # Test menu component visibility
246
+ edit_page.should_have_menu_visible()
247
+ edit_page.menu.should_be_visible()
248
+ edit_page.menu.should_have_complete_navigation_structure()
257
249
 
258
250
  # Test navigation to other sections
259
- edit_page.header.navigate_to_assistants()
251
+ edit_page.menu.navigate_to_assistants()
260
252
  edit_page.should_have_url_containing("#/assistants")
261
253
 
262
254
  # Navigate back to edit workflow
263
255
  edit_page.navigate_to(test_workflow.id)
264
- edit_page.header.navigate_to_workflows()
256
+ edit_page.menu.navigate_to_workflows()
265
257
  edit_page.should_have_url_containing("#/workflows/my")
266
258
 
267
259
 
268
- @pytest.mark.workflow_ui
269
- @pytest.mark.ui
270
- def test_edit_workflow_workflow_mode_information(page, test_workflow):
271
- """Test workflow mode information display."""
272
- edit_page = EditWorkflowPage(page)
273
- edit_page.navigate_to(test_workflow.id)
274
-
275
- # Test workflow mode information display
276
- edit_page.should_show_workflow_mode_info()
277
-
278
-
279
260
  @pytest.mark.workflow_ui
280
261
  @pytest.mark.ui
281
262
  def test_edit_workflow_data_persistence_across_tabs(page, test_workflow):
@@ -353,13 +334,12 @@ def test_edit_workflow_complete_update(page, test_workflow):
353
334
  )
354
335
 
355
336
  workflows_page = WorkflowsPage(page)
356
- workflows_page.should_be_on_workflows_page()
337
+ workflows_page.navigate_to()
357
338
  workflows_page.should_see_workflow_card(test_workflow.name)
358
339
 
359
340
  edit_page.navigate_to(test_workflow.id)
360
341
  edit_page.should_have_name_field_value(test_workflow.name)
361
342
  edit_page.should_have_description_field_value(test_workflow.description)
362
- edit_page.should_have_workflow_mode_selected("Sequential")
363
343
  edit_page.should_have_shared_switch_unchecked()
364
344
  edit_page.should_have_yaml_editor_with_content(test_workflow.yaml_config)
365
345
 
@@ -70,7 +70,7 @@ def test_workflow_details_page_elements_visibility(page, test_workflow):
70
70
  # Verify we are on the correct page
71
71
  workflow_details_page.should_be_on_workflow_details_page()
72
72
 
73
- # Verify header elements
73
+ # Verify menu elements
74
74
  workflow_details_page.should_have_header_elements_visible()
75
75
 
76
76
  # Verify workflow information
@@ -87,7 +87,7 @@ def test_workflow_details_page_elements_visibility(page, test_workflow):
87
87
  workflow_details_page.should_have_executions_tab_active()
88
88
 
89
89
  # Verify common components
90
- workflow_details_page.should_have_header_visible()
90
+ workflow_details_page.should_have_menu_visible()
91
91
  workflow_details_page.sidebar.should_be_visible()
92
92
 
93
93
 
@@ -210,6 +210,7 @@ def test_workflow_details_action_buttons(page, test_workflow):
210
210
  # This would depend on the actual implementation
211
211
 
212
212
 
213
+ @pytest.mark.skip(reason="Need to rewrite whole case")
213
214
  @pytest.mark.workflow_ui
214
215
  @pytest.mark.ui
215
216
  def test_workflow_details_navigation_buttons(page, test_workflow):
@@ -245,23 +246,23 @@ def test_workflow_details_sidebar_functionality(page, test_workflow):
245
246
 
246
247
  @pytest.mark.workflow_ui
247
248
  @pytest.mark.ui
248
- def test_workflow_details_header_navigation(page, test_workflow):
249
- """Test header navigation from Workflow Details page."""
249
+ def test_workflow_details_menu_navigation(page, test_workflow):
250
+ """Test menu navigation from Workflow Details page."""
250
251
  workflow_details_page = WorkflowDetailsPage(page)
251
252
  workflow_details_page.navigate_to(test_workflow.id)
252
253
 
253
- # Test header component visibility
254
- workflow_details_page.should_have_header_visible()
255
- workflow_details_page.header.should_be_visible()
256
- workflow_details_page.header.should_have_complete_navigation_structure()
254
+ # Test menu component visibility
255
+ workflow_details_page.should_have_menu_visible()
256
+ workflow_details_page.menu.should_be_visible()
257
+ workflow_details_page.menu.should_have_complete_navigation_structure()
257
258
 
258
259
  # Test navigation to other sections
259
- workflow_details_page.header.navigate_to_assistants()
260
+ workflow_details_page.menu.navigate_to_assistants()
260
261
  workflow_details_page.should_have_url_containing("#/assistants")
261
262
 
262
263
  # Navigate back to workflow details
263
264
  workflow_details_page.navigate_to(test_workflow.id)
264
- workflow_details_page.header.navigate_to_workflows()
265
+ workflow_details_page.menu.navigate_to_workflows()
265
266
  workflow_details_page.should_have_url_containing("#/workflows")
266
267
 
267
268
 
@@ -363,7 +364,6 @@ def test_configuration_tab_content(page, test_workflow):
363
364
  workflow_details_page.should_have_workflow_description(test_workflow.description)
364
365
 
365
366
  # Verify Overview sidebar content
366
- workflow_details_page.should_have_mode_value("Sequential")
367
367
  workflow_details_page.should_have_project_value(PROJECT)
368
368
 
369
369
  # Verify Workflow ID
@@ -125,8 +125,6 @@ def test_execution_history_sidebar_content(page, executions):
125
125
 
126
126
  executions_page.should_have_execution_history_items()
127
127
 
128
- executions_page.should_have_active_execution_item()
129
-
130
128
 
131
129
  @pytest.mark.workflow_ui
132
130
  @pytest.mark.workflow_execution_ui
@@ -36,8 +36,6 @@ def test_templates_visible(page, predefined_templates):
36
36
  for i in range(len(templates)):
37
37
  expected_name = templates[i]["name"]
38
38
  expected_description = templates[i]["description"]
39
- if len(expected_description) > 1500:
40
- expected_description = f"{expected_description[:1500]}\n..."
41
39
  trimmed_description = templates[i]["description"][:70]
42
40
 
43
41
  workflow_templates_page.should_have_title_description(
@@ -2,6 +2,8 @@ import pytest
2
2
  from codemie_test_harness.tests.ui.pageobject.workflows.workflows_page import (
3
3
  WorkflowsPage,
4
4
  )
5
+ from codemie_test_harness.tests.utils.base_utils import get_random_name
6
+ from tests import TEST_USER
5
7
 
6
8
 
7
9
  @pytest.mark.workflow_ui
@@ -37,23 +39,23 @@ def test_workflow_search_functionality(page):
37
39
  workflow_page = WorkflowsPage(page)
38
40
  workflow_page.navigate_to()
39
41
  workflow_page.sidebar.navigate_to_all_workflows()
40
- workflow_page.search_workflows("basic")
42
+ workflow_page.search_workflows("123")
41
43
  workflow_page.should_see_workflow_cards()
42
44
  workflow_page.should_not_see_new_release_popup()
43
45
 
44
46
 
45
47
  @pytest.mark.workflow_ui
46
48
  @pytest.mark.ui
47
- def test_workflow_card_by_name(page):
49
+ def test_workflow_card_by_name(page, workflow_with_virtual_assistant):
48
50
  """Test getting and interacting with a specific workflow card."""
49
- workflow_name = "basicWfcx9"
51
+ workflow = workflow_with_virtual_assistant(get_random_name())
50
52
 
51
53
  workflow_page = WorkflowsPage(page)
52
54
  workflow_page.navigate_to()
53
55
  workflow_page.sidebar.navigate_to_all_workflows()
54
- workflow_page.should_see_workflow_card(workflow_name)
55
- workflow_page.should_see_workflow_author(workflow_name, "Dmytro Adamtsev")
56
- workflow_page.should_see_shared_workflow(workflow_name)
56
+ workflow_page.should_see_workflow_card(workflow.name)
57
+ workflow_page.should_see_workflow_author(workflow.name, TEST_USER)
58
+ workflow_page.should_see_shared_workflow(workflow.name)
57
59
 
58
60
 
59
61
  @pytest.mark.workflow_ui
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: codemie-test-harness
3
- Version: 0.1.167
3
+ Version: 0.1.169
4
4
  Summary: Autotest for CodeMie backend and UI
5
5
  Author: Anton Yeromin
6
6
  Author-email: anton_yeromin@epam.com
@@ -13,7 +13,7 @@ Requires-Dist: aws-assume-role-lib (>=2.10.0,<3.0.0)
13
13
  Requires-Dist: boto3 (>=1.39.8,<2.0.0)
14
14
  Requires-Dist: click (>=8.1.7,<9.0.0)
15
15
  Requires-Dist: codemie-plugins (>=0.1.123,<0.2.0)
16
- Requires-Dist: codemie-sdk-python (==0.1.167)
16
+ Requires-Dist: codemie-sdk-python (==0.1.169)
17
17
  Requires-Dist: pytest (>=8.4.1,<9.0.0)
18
18
  Requires-Dist: pytest-playwright (>=0.7.0,<0.8.0)
19
19
  Requires-Dist: pytest-reportportal (>=5.5.2,<6.0.0)
@@ -101,6 +101,7 @@ codemie_test_harness/tests/test_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeu
101
101
  codemie_test_harness/tests/test_data/ado_test_plan_tools_test_data.py,sha256=Al5u4HNfrcoj-b072uEGsqUqjKqwXLGJXKQ0QeJT3PI,5778
102
102
  codemie_test_harness/tests/test_data/ado_wiki_tools_test_data.py,sha256=xvgEja5vE0l41sP4fE0stdFLQ0M201FWynOCEcRYufE,3188
103
103
  codemie_test_harness/tests/test_data/ado_work_item_tools_test_data.py,sha256=MHou6QGjufyX5t1oexnq2Y4UCjlE17eeyMuIz6Ml62s,5693
104
+ codemie_test_harness/tests/test_data/assistant_test_data.py,sha256=DRfungbLNwbFQf6qTNOVjR3l2v7fBDzgUq1v9fwXw78,6829
104
105
  codemie_test_harness/tests/test_data/cloud_tools_test_data.py,sha256=SWz-VTNcWteCvVupl2xksv4eEFkmtWMdRIqrZxjpFYk,6200
105
106
  codemie_test_harness/tests/test_data/codebase_tools_test_data.py,sha256=xbnIlDbiZTibGekrodmhO7bOg7kilsoKSlfHAhcmyIQ,3312
106
107
  codemie_test_harness/tests/test_data/data_management_tools_test_data.py,sha256=e5Cfqza3GUE3hRElm1bxgQO4PaN-jOiNd38OX9299Kc,2793
@@ -190,36 +191,42 @@ codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_to
190
191
  codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_tools_name.yaml,sha256=Xh6TKSAGZyD2-gCxaW7BRW_9-_7-5EQA75djCc3FwLI,263
191
192
  codemie_test_harness/tests/test_data/workflow_validation_messages.py,sha256=zg5BhMJ_tbzEeLSYJEnspHTuWar1qgoxqTfIXltlSPg,3282
192
193
  codemie_test_harness/tests/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
193
- codemie_test_harness/tests/ui/conftest.py,sha256=1b8s--q2sAXjqHZKFi075Yqpq-fKLXOMlHHibSHKNrU,2490
194
+ codemie_test_harness/tests/ui/assistants/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
195
+ codemie_test_harness/tests/ui/assistants/test_create_assistant.py,sha256=8W7J4y4IVZhnqvoitDhLFCg2ut3NKnErfipULwT-azE,14556
196
+ codemie_test_harness/tests/ui/conftest.py,sha256=7u5eaLozXRzuB_a8NCm92sd5Axefs-UpVEg1mIPQ_r0,3436
194
197
  codemie_test_harness/tests/ui/pageobject/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
195
198
  codemie_test_harness/tests/ui/pageobject/assistants/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
196
- codemie_test_harness/tests/ui/pageobject/assistants/assistants_page.py,sha256=wCg1jLVUl02szz_FGostVaOGe-QFzkE7ClBtD1HOHgg,6038
197
- codemie_test_harness/tests/ui/pageobject/base_page.py,sha256=3-Syytm3Ok3XQa-BoYh197j_U9C9WcrIWCvpiN9-RbE,7519
198
- codemie_test_harness/tests/ui/pageobject/components/__init__.py,sha256=dmpCrOUTRRL3ADWcJtKBiEnIneRilvhHX86sW73m7PI,583
199
- codemie_test_harness/tests/ui/pageobject/components/execution_history_row.py,sha256=86yU0TeuChO6T_BKlPAFAKtOW_l1PpWdy3Opiz2K-do,6493
200
- codemie_test_harness/tests/ui/pageobject/components/header.py,sha256=OCug-T3LKF5qHumXXx02UzhO1pwkQcLbbhGLkm7y0oY,12016
201
- codemie_test_harness/tests/ui/pageobject/components/pop_up.py,sha256=HIc1hI5WMLwL_PaZ4nc2DWCce3qTsscpo8a8ma2I_YE,3470
202
- codemie_test_harness/tests/ui/pageobject/components/workflow_card.py,sha256=zE8pYb9TUXYTwrdhsIk8e-lwuYQMDlzdlAbcaYriazs,6792
203
- codemie_test_harness/tests/ui/pageobject/components/workflow_execution_history_item.py,sha256=YGCEEvW-XhUelFeLp0BXLlVioKw-GM2bVhDU0KeE8l0,7876
204
- codemie_test_harness/tests/ui/pageobject/components/workflow_execution_state.py,sha256=DH5XGoXY0Sf_parKsWs8XSw4G0WbWhdnOxRk93MUkXs,13836
205
- codemie_test_harness/tests/ui/pageobject/components/workflow_sidebar.py,sha256=UDfYW6J6RMG-jTbK2PSNXkOSra9g5VeGr4SeJET7XMo,17142
199
+ codemie_test_harness/tests/ui/pageobject/assistants/assistants_page.py,sha256=pYUhVRGZhCVX5EILCTkqjvOBPfD9u2qc5Rsa54up5IA,6036
200
+ codemie_test_harness/tests/ui/pageobject/assistants/create_assistant_page.py,sha256=wwn-6vU43NYjbAokZmi6gxBnBApWNapkAkPGjBfjKYI,22502
201
+ codemie_test_harness/tests/ui/pageobject/assistants/generate_with_ai_modal.py,sha256=rsavzWxmawKzI4wHxixp49IN6m_ZUZNFTJTSnE8jBr8,13732
202
+ codemie_test_harness/tests/ui/pageobject/base_page.py,sha256=9sdQe14Oh7p475zswlgXGnM1WXzTB_x6OxlbVtzJ-U0,7472
203
+ codemie_test_harness/tests/ui/pageobject/components/__init__.py,sha256=6scUFCL2StHbKIoNgGGZdpeDZUwbCrKIH7hwaskAB4E,577
204
+ codemie_test_harness/tests/ui/pageobject/components/execution_history_row.py,sha256=aGHc5AOpGR0tlfmLQfk8272TN6TWiuiXHUcg6PtB1Iw,6499
205
+ codemie_test_harness/tests/ui/pageobject/components/menu.py,sha256=llTWAbJHldo1-wY86k_2Dvs8iSEmMWzrw26AhQJ1kis,10501
206
+ codemie_test_harness/tests/ui/pageobject/components/pop_up.py,sha256=DfdQfLZp_We8K9rNyLXtJqy3vk8BxEnp32h9dTThJUM,3466
207
+ codemie_test_harness/tests/ui/pageobject/components/workflow_card.py,sha256=8M4JKYCI46_-0EosFBgWfFuD3-_AH8jVIhSRJCQqamQ,6712
208
+ codemie_test_harness/tests/ui/pageobject/components/workflow_execution_history_item.py,sha256=wSl4ELoEAmlgrh-NiGNfAfFZtnDvenszir7ZoIcmgt0,7884
209
+ codemie_test_harness/tests/ui/pageobject/components/workflow_execution_state.py,sha256=IWir8fP-7oc9t17Rjs6mHCNCxfQfmdfbFY2SsNxZaE4,13837
210
+ codemie_test_harness/tests/ui/pageobject/components/workflow_sidebar.py,sha256=9rGoopJShDtASejDA1L8yL6TfRvGHD_5yNXtDKcKzoQ,17158
206
211
  codemie_test_harness/tests/ui/pageobject/components/workflow_state_card.py,sha256=V7V1p3FNPrwVFM0CjZeg0MUkW9bGoF8UP5DuuH-r4gU,11548
207
212
  codemie_test_harness/tests/ui/pageobject/login_page.py,sha256=cs0nYtvYykXfli9vYKWPpIWOEQbksUDUGgq03hulfSg,3062
208
213
  codemie_test_harness/tests/ui/pageobject/workflows/__init__.py,sha256=UaVz3N_M1qG3EetktyQVM1j03_6XNEmGgyO2W5clLoo,519
209
- codemie_test_harness/tests/ui/pageobject/workflows/base_workflow_form_page.py,sha256=qMx_XSMaAvnPaKYACZREof-EY3Ifk-jA7eNgs6Yod5o,16587
210
- codemie_test_harness/tests/ui/pageobject/workflows/create_workflow_page.py,sha256=ZLVkByCA_O314ZukWQIRtO2iUgBZKq1-tgghJ-IpMM0,3889
211
- codemie_test_harness/tests/ui/pageobject/workflows/edit_workflow_page.py,sha256=r124W2bAN1lZYuCta62pTyi-Q5a-KowffyyzBZnDqrs,9977
212
- codemie_test_harness/tests/ui/pageobject/workflows/workflow_details_page.py,sha256=2Iois05IGG06BO1nMU0quUrtKi2xq7FaEPCrui6WuiQ,24251
213
- codemie_test_harness/tests/ui/pageobject/workflows/workflow_executions_page.py,sha256=i7SwVYXvy1FmG42MTM1qtO-AY1HGtp_tzAMugeUoRe0,20915
214
- codemie_test_harness/tests/ui/pageobject/workflows/workflow_template_details.py,sha256=CebzrHHX8xW_2y96tO60bH4KXjoOuOPqo4Y8r6k7qW0,3786
215
- codemie_test_harness/tests/ui/pageobject/workflows/workflow_templates_page.py,sha256=m7H3ZbNmBKW6DNizENcVdPd5FCVDKeLlcZI3yQhoKZk,2550
216
- codemie_test_harness/tests/ui/pageobject/workflows/workflows_page.py,sha256=8Yuu245PzqzBu0MewMr9_xXI-9IC2DFNZE-ObxQJN7w,11248
217
- codemie_test_harness/tests/ui/test_create_workflow.py,sha256=rB0N2B3G6HbbIxiDjO_XDE9d2uTb7Bv0rMvLAzZuK_A,11264
218
- codemie_test_harness/tests/ui/test_edit_workflow.py,sha256=i6mVT7ZutYDmHdba6JQU6RXU4bRP1_Sr1gYuFVaCIrI,13676
219
- codemie_test_harness/tests/ui/test_workflow_details.py,sha256=eEFjd0GY6YsYi67Pngva2S3DMqBqzcd0_HtuWrYrGn8,15420
220
- codemie_test_harness/tests/ui/test_workflow_executions_page.py,sha256=DLvBnWNkRJTtJo4QgbfpklJdG9oyhi7gxgLJWVuDR2s,12724
221
- codemie_test_harness/tests/ui/test_workflow_templates.py,sha256=pVuF98d3eEfinb5jpkTr4ZwuDl6IBMAFQKdPYfupoUI,4798
222
- codemie_test_harness/tests/ui/test_workflows.py,sha256=a2VY8BAsw3Po7e10r4g7S798GhpA4KYh2ZjnYEhU1PY,3664
214
+ codemie_test_harness/tests/ui/pageobject/workflows/base_workflow_form_page.py,sha256=zkHtUIqRq6By5vKrLMoOmCCFwDlmhUUZsPruummftSw,14912
215
+ codemie_test_harness/tests/ui/pageobject/workflows/create_workflow_page.py,sha256=Z7965E7Evyu_GNSdFuheFAUlYjH8b_jm4jDLsAnhEow,3881
216
+ codemie_test_harness/tests/ui/pageobject/workflows/edit_workflow_page.py,sha256=ImVM33A9nj9P4skXSOp6TuHn7Hj2wlm00r4pLJcTjn0,9997
217
+ codemie_test_harness/tests/ui/pageobject/workflows/workflow_details_page.py,sha256=3_j3rhQvlFtRkvXlcrul0AZoJi6kinEOO1ED3Vl0hI4,23345
218
+ codemie_test_harness/tests/ui/pageobject/workflows/workflow_executions_page.py,sha256=Rxi5CbitoTRiMBW2rURoA590bSqF7RcGlkHsRqsGEeg,20494
219
+ codemie_test_harness/tests/ui/pageobject/workflows/workflow_template_details.py,sha256=6Su0yLA8wDybCPVE2WFhV6l6r_38aYaRY0mEYnLHlYg,3556
220
+ codemie_test_harness/tests/ui/pageobject/workflows/workflow_templates_page.py,sha256=J5jxdZ2aQ9k15ghyRKYACxX2F9NiR6dXYBw0EaYlaN0,2645
221
+ codemie_test_harness/tests/ui/pageobject/workflows/workflows_page.py,sha256=yqdaSTA4aUeD-8A9Or0OgJZhMr2tDvDWWP_f4uPL5dw,11186
222
+ codemie_test_harness/tests/ui/pytest.ini,sha256=5LM3ib1yTB4jUHrC8Ksas_k8Li6RBuuUTAWCPRx-4MY,554
223
+ codemie_test_harness/tests/ui/workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
224
+ codemie_test_harness/tests/ui/workflows/test_create_workflow.py,sha256=zX_6-pcYGCLiU6FUAvP-uo3jXy0PEEPBc_eqbP0FLV0,10522
225
+ codemie_test_harness/tests/ui/workflows/test_edit_workflow.py,sha256=RQIV5fSd3xv3tdGidpF8mMwkoHJ57Xn1HzeXnFq4eB0,12913
226
+ codemie_test_harness/tests/ui/workflows/test_workflow_details.py,sha256=PCEiclg1o_EfEbWLs7zAtvGmqwceoOJfb3Y-_sTjpqA,15392
227
+ codemie_test_harness/tests/ui/workflows/test_workflow_executions_page.py,sha256=4E-dPJrXSMiBiE9ZVHW4Ln6H121KbtEUa-vF1KXPGyU,12667
228
+ codemie_test_harness/tests/ui/workflows/test_workflow_templates.py,sha256=qDHv5z8NrBGsKx0tiK9aft_M9-98k7TY1OSm1FKPV9s,4680
229
+ codemie_test_harness/tests/ui/workflows/test_workflows.py,sha256=-tEYwIze1HNztzhx_yJy9xcwHLAnSZj_vU4UzlwUBfg,3820
223
230
  codemie_test_harness/tests/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
224
231
  codemie_test_harness/tests/utils/assistant_utils.py,sha256=jy3dFF4ZiT22Wippl1a5jIEAAyJ71P0ss8AIHPefz6k,6511
225
232
  codemie_test_harness/tests/utils/aws_parameters_store.py,sha256=YAVpvwElkKZJZvzSVxtOue1Gjs-kvSBS2y5QvIlz484,3267
@@ -351,7 +358,7 @@ codemie_test_harness/tests/workflow/virtual_assistant_tools/servicenow/__init__.
351
358
  codemie_test_harness/tests/workflow/virtual_assistant_tools/servicenow/test_workflow_with_servicenow_tools.py,sha256=vq6tucNBxiNIQSmIj_pYiiPm0lipU9X3kzeCd6xEbRM,966
352
359
  codemie_test_harness/tests/workflow/virtual_assistant_tools/vcs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
353
360
  codemie_test_harness/tests/workflow/virtual_assistant_tools/vcs/test_workflow_with_vcs_tools.py,sha256=uD2qs361j6Egp4UumfoQ4gC24-NioXfiW0IF53N9hVA,1175
354
- codemie_test_harness-0.1.167.dist-info/METADATA,sha256=QYEsiXDnm8tybx4tFo5nJZnEwNhb58eJVfLUSJHZreU,8998
355
- codemie_test_harness-0.1.167.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
356
- codemie_test_harness-0.1.167.dist-info/entry_points.txt,sha256=n98t-EOM5M1mnMl_j2X4siyeO9zr0WD9a5LF7JyElIM,73
357
- codemie_test_harness-0.1.167.dist-info/RECORD,,
361
+ codemie_test_harness-0.1.169.dist-info/METADATA,sha256=PffHy-1ACIQtG2AsNfKTzekxNj-cUh92rs4sKbAd2iw,8998
362
+ codemie_test_harness-0.1.169.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
363
+ codemie_test_harness-0.1.169.dist-info/entry_points.txt,sha256=n98t-EOM5M1mnMl_j2X4siyeO9zr0WD9a5LF7JyElIM,73
364
+ codemie_test_harness-0.1.169.dist-info/RECORD,,