codemie-test-harness 0.1.167__py3-none-any.whl → 0.1.168__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 (28) hide show
  1. codemie_test_harness/tests/ui/pageobject/base_page.py +24 -24
  2. codemie_test_harness/tests/ui/pageobject/components/__init__.py +2 -2
  3. codemie_test_harness/tests/ui/pageobject/components/execution_history_row.py +3 -3
  4. codemie_test_harness/tests/ui/pageobject/components/{header.py → menu.py} +57 -111
  5. codemie_test_harness/tests/ui/pageobject/components/pop_up.py +2 -2
  6. codemie_test_harness/tests/ui/pageobject/components/workflow_card.py +7 -10
  7. codemie_test_harness/tests/ui/pageobject/components/workflow_execution_history_item.py +9 -9
  8. codemie_test_harness/tests/ui/pageobject/components/workflow_execution_state.py +1 -1
  9. codemie_test_harness/tests/ui/pageobject/components/workflow_sidebar.py +16 -16
  10. codemie_test_harness/tests/ui/pageobject/workflows/base_workflow_form_page.py +32 -65
  11. codemie_test_harness/tests/ui/pageobject/workflows/create_workflow_page.py +4 -4
  12. codemie_test_harness/tests/ui/pageobject/workflows/edit_workflow_page.py +6 -4
  13. codemie_test_harness/tests/ui/pageobject/workflows/workflow_details_page.py +32 -61
  14. codemie_test_harness/tests/ui/pageobject/workflows/workflow_executions_page.py +17 -23
  15. codemie_test_harness/tests/ui/pageobject/workflows/workflow_template_details.py +5 -11
  16. codemie_test_harness/tests/ui/pageobject/workflows/workflow_templates_page.py +5 -2
  17. codemie_test_harness/tests/ui/pageobject/workflows/workflows_page.py +3 -5
  18. codemie_test_harness/tests/ui/workflows/__init__.py +0 -0
  19. codemie_test_harness/tests/ui/{test_create_workflow.py → workflows/test_create_workflow.py} +12 -33
  20. codemie_test_harness/tests/ui/{test_edit_workflow.py → workflows/test_edit_workflow.py} +14 -34
  21. codemie_test_harness/tests/ui/{test_workflow_details.py → workflows/test_workflow_details.py} +11 -11
  22. codemie_test_harness/tests/ui/{test_workflow_executions_page.py → workflows/test_workflow_executions_page.py} +0 -2
  23. codemie_test_harness/tests/ui/{test_workflow_templates.py → workflows/test_workflow_templates.py} +0 -2
  24. codemie_test_harness/tests/ui/{test_workflows.py → workflows/test_workflows.py} +8 -6
  25. {codemie_test_harness-0.1.167.dist-info → codemie_test_harness-0.1.168.dist-info}/METADATA +2 -2
  26. {codemie_test_harness-0.1.167.dist-info → codemie_test_harness-0.1.168.dist-info}/RECORD +28 -27
  27. {codemie_test_harness-0.1.167.dist-info → codemie_test_harness-0.1.168.dist-info}/WHEEL +0 -0
  28. {codemie_test_harness-0.1.167.dist-info → codemie_test_harness-0.1.168.dist-info}/entry_points.txt +0 -0
@@ -22,13 +22,13 @@ class WorkflowExecutionsPage(BasePage):
22
22
  @property
23
23
  def workflow_title(self) -> Locator:
24
24
  """Workflow title in the header."""
25
- return self.page.locator("div.text-lg.font-semibold.whitespace-nowrap")
25
+ return self.page.locator("div.text-h3")
26
26
 
27
27
  @property
28
28
  def export_button(self) -> Locator:
29
29
  """Export button in the header."""
30
30
  return self.page.locator(
31
- '//button[text()=" Rerun workflow "]/preceding-sibling::button'
31
+ '//button[text()=" Rerun workflow "]/preceding-sibling::button[2]'
32
32
  )
33
33
 
34
34
  @property
@@ -41,7 +41,7 @@ class WorkflowExecutionsPage(BasePage):
41
41
  @property
42
42
  def sidebar(self) -> Locator:
43
43
  """Left sidebar container."""
44
- return self.page.locator("aside.sidebar")
44
+ return self.page.locator("aside.w-workflow-exec-sidebar")
45
45
 
46
46
  @property
47
47
  def execution_history_title(self) -> Locator:
@@ -51,9 +51,7 @@ class WorkflowExecutionsPage(BasePage):
51
51
  @property
52
52
  def time_period_label(self) -> Locator:
53
53
  """Time period label (Last 7 days)."""
54
- return self.page.locator(
55
- 'div.text-xs.text-text-secondary.uppercase:has-text("Last 7 days")'
56
- )
54
+ return self.page.locator("div.text-xs.text-text-secondary.uppercase")
57
55
 
58
56
  @property
59
57
  def execution_history_items(self) -> Locator:
@@ -63,7 +61,9 @@ class WorkflowExecutionsPage(BasePage):
63
61
  @property
64
62
  def active_execution_item(self) -> Locator:
65
63
  """Currently active/selected execution item in sidebar."""
66
- return self.page.locator(".bg-new-stroke")
64
+ return self.page.locator(
65
+ "div[class*='bg-new-stroke/60'][class*='!text-text-main']"
66
+ )
67
67
 
68
68
  # ==================== MAIN CONTENT ELEMENTS ====================
69
69
 
@@ -107,12 +107,12 @@ class WorkflowExecutionsPage(BasePage):
107
107
  @property
108
108
  def prompt_section(self) -> Locator:
109
109
  """Prompt code block section."""
110
- return self.page.locator("div.flex.mt-2")
110
+ return self.page.locator("pre.code-content.language-text")
111
111
 
112
112
  @property
113
113
  def prompt_code_block(self) -> Locator:
114
114
  """Prompt code block container."""
115
- return self.prompt_section.locator("div.code-block.min-w-full")
115
+ return self.page.locator("div.code-block.min-w-full")
116
116
 
117
117
  @property
118
118
  def prompt_header(self) -> Locator:
@@ -122,29 +122,27 @@ class WorkflowExecutionsPage(BasePage):
122
122
  @property
123
123
  def prompt_title(self) -> Locator:
124
124
  """Prompt title in header."""
125
- return self.prompt_header.locator('div:has-text("prompt")')
125
+ return self.prompt_header.locator('div:has-text("Prompt")')
126
126
 
127
127
  @property
128
128
  def prompt_info_button(self) -> Locator:
129
129
  """Prompt info button."""
130
- return self.prompt_header.locator(
131
- 'xpath=.//button[text()=" Copy code "]/preceding-sibling::button'
132
- )
130
+ return self.prompt_header.locator("button").first
133
131
 
134
132
  @property
135
133
  def prompt_copy_button(self) -> Locator:
136
134
  """Prompt copy code button."""
137
- return self.prompt_header.locator('xpath=.//button[text()=" Copy code "]')
135
+ return self.prompt_header.locator("button").nth(1)
138
136
 
139
137
  @property
140
138
  def prompt_download_button(self) -> Locator:
141
139
  """Prompt download button."""
142
- return self.prompt_header.locator('xpath=.//button[text()=" Download "]')
140
+ return self.prompt_header.locator("button").nth(2)
143
141
 
144
142
  @property
145
143
  def prompt_content(self) -> Locator:
146
144
  """Prompt code content."""
147
- return self.prompt_code_block.locator("pre.code-content.language-prompt code")
145
+ return self.prompt_code_block.locator("code")
148
146
 
149
147
  # ==================== STATES SECTION ====================
150
148
 
@@ -176,7 +174,7 @@ class WorkflowExecutionsPage(BasePage):
176
174
  @property
177
175
  def execution_states(self) -> Locator:
178
176
  """All execution state cards."""
179
- return self.page.locator('//div[@class="flex flex-row gap-5"]/..')
177
+ return self.page.locator(".flex.flex-col.justify-between.text-sm")
180
178
 
181
179
  # ==================== PAGINATION SECTION ====================
182
180
 
@@ -448,8 +446,7 @@ class WorkflowExecutionsPage(BasePage):
448
446
  self.should_have_status("Succeeded")
449
447
  expect(self.status_badge).to_contain_class("bg-success-secondary")
450
448
  expect(self.status_badge).to_contain_class("text-success-main")
451
- expect(self.status_badge).to_contain_class("border-success-main")
452
- expect(self.status_dot).to_contain_class("bg-success-main")
449
+ expect(self.status_badge).to_contain_class("border-success-border")
453
450
 
454
451
  @step
455
452
  def should_have_failed_status(self):
@@ -457,8 +454,7 @@ class WorkflowExecutionsPage(BasePage):
457
454
  self.should_have_status("Failed")
458
455
  expect(self.status_badge).to_contain_class("bg-error-secondary")
459
456
  expect(self.status_badge).to_contain_class("text-error-main")
460
- expect(self.status_badge).to_contain_class("border-error-main")
461
- expect(self.status_dot).to_contain_class("bg-error-main")
457
+ expect(self.status_badge).to_contain_class("border-error-border")
462
458
 
463
459
  @step
464
460
  def should_have_triggered_by(self, expected_user: str):
@@ -522,13 +518,11 @@ class WorkflowExecutionsPage(BasePage):
522
518
  @step
523
519
  def should_have_configuration_sidebar_closed(self):
524
520
  """Verify that the configuration sidebar is closed."""
525
- expect(self.configuration_sidebar).not_to_contain_class("w-[360px]")
526
521
  expect(self.configuration_sidebar).not_to_contain_class("opacity-100")
527
522
 
528
523
  @step
529
524
  def should_have_configuration_sidebar_open(self):
530
525
  """Verify that the configuration sidebar is open."""
531
- expect(self.configuration_sidebar).to_contain_class("w-[360px]")
532
526
  expect(self.configuration_sidebar).to_contain_class("opacity-100")
533
527
  expect(self.configure_workflow_title).to_be_visible()
534
528
  expect(self.workflow_info_card).to_be_visible()
@@ -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):
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.168
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.168)
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)