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.
- codemie_test_harness/tests/test_data/assistant_test_data.py +197 -0
- codemie_test_harness/tests/ui/assistants/__init__.py +0 -0
- codemie_test_harness/tests/ui/assistants/test_create_assistant.py +408 -0
- codemie_test_harness/tests/ui/conftest.py +23 -3
- codemie_test_harness/tests/ui/pageobject/assistants/assistants_page.py +3 -4
- codemie_test_harness/tests/ui/pageobject/assistants/create_assistant_page.py +689 -0
- codemie_test_harness/tests/ui/pageobject/assistants/generate_with_ai_modal.py +367 -0
- codemie_test_harness/tests/ui/pageobject/base_page.py +24 -24
- codemie_test_harness/tests/ui/pageobject/components/__init__.py +2 -2
- codemie_test_harness/tests/ui/pageobject/components/execution_history_row.py +3 -3
- codemie_test_harness/tests/ui/pageobject/components/{header.py → menu.py} +57 -111
- codemie_test_harness/tests/ui/pageobject/components/pop_up.py +2 -2
- codemie_test_harness/tests/ui/pageobject/components/workflow_card.py +7 -10
- codemie_test_harness/tests/ui/pageobject/components/workflow_execution_history_item.py +9 -9
- codemie_test_harness/tests/ui/pageobject/components/workflow_execution_state.py +1 -1
- codemie_test_harness/tests/ui/pageobject/components/workflow_sidebar.py +16 -16
- codemie_test_harness/tests/ui/pageobject/workflows/base_workflow_form_page.py +32 -65
- codemie_test_harness/tests/ui/pageobject/workflows/create_workflow_page.py +4 -4
- codemie_test_harness/tests/ui/pageobject/workflows/edit_workflow_page.py +6 -4
- codemie_test_harness/tests/ui/pageobject/workflows/workflow_details_page.py +32 -61
- codemie_test_harness/tests/ui/pageobject/workflows/workflow_executions_page.py +17 -23
- codemie_test_harness/tests/ui/pageobject/workflows/workflow_template_details.py +5 -11
- codemie_test_harness/tests/ui/pageobject/workflows/workflow_templates_page.py +5 -2
- codemie_test_harness/tests/ui/pageobject/workflows/workflows_page.py +3 -5
- codemie_test_harness/tests/ui/pytest.ini +18 -0
- codemie_test_harness/tests/ui/workflows/__init__.py +0 -0
- codemie_test_harness/tests/ui/{test_create_workflow.py → workflows/test_create_workflow.py} +12 -33
- codemie_test_harness/tests/ui/{test_edit_workflow.py → workflows/test_edit_workflow.py} +14 -34
- codemie_test_harness/tests/ui/{test_workflow_details.py → workflows/test_workflow_details.py} +11 -11
- codemie_test_harness/tests/ui/{test_workflow_executions_page.py → workflows/test_workflow_executions_page.py} +0 -2
- codemie_test_harness/tests/ui/{test_workflow_templates.py → workflows/test_workflow_templates.py} +0 -2
- codemie_test_harness/tests/ui/{test_workflows.py → workflows/test_workflows.py} +8 -6
- {codemie_test_harness-0.1.167.dist-info → codemie_test_harness-0.1.169.dist-info}/METADATA +2 -2
- {codemie_test_harness-0.1.167.dist-info → codemie_test_harness-0.1.169.dist-info}/RECORD +36 -29
- {codemie_test_harness-0.1.167.dist-info → codemie_test_harness-0.1.169.dist-info}/WHEEL +0 -0
- {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
|
|
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("
|
|
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-
|
|
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).
|
|
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("
|
|
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
|
-
|
|
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/"]
|
|
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.
|
|
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.
|
|
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
|
|
26
|
-
create_page.
|
|
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.
|
|
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
|
|
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
|
|
177
|
-
"""Test
|
|
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
|
|
182
|
-
create_page.
|
|
183
|
-
create_page.
|
|
184
|
-
create_page.
|
|
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.
|
|
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.
|
|
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
|
|
64
|
-
edit_page.
|
|
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.
|
|
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
|
|
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
|
|
249
|
-
"""Test
|
|
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
|
|
254
|
-
edit_page.
|
|
255
|
-
edit_page.
|
|
256
|
-
edit_page.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
codemie_test_harness/tests/ui/{test_workflow_details.py → workflows/test_workflow_details.py}
RENAMED
|
@@ -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
|
|
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.
|
|
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
|
|
249
|
-
"""Test
|
|
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
|
|
254
|
-
workflow_details_page.
|
|
255
|
-
workflow_details_page.
|
|
256
|
-
workflow_details_page.
|
|
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.
|
|
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.
|
|
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
|
codemie_test_harness/tests/ui/{test_workflow_templates.py → workflows/test_workflow_templates.py}
RENAMED
|
@@ -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("
|
|
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
|
-
|
|
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(
|
|
55
|
-
workflow_page.should_see_workflow_author(
|
|
56
|
-
workflow_page.should_see_shared_workflow(
|
|
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.
|
|
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.
|
|
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/
|
|
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=
|
|
197
|
-
codemie_test_harness/tests/ui/pageobject/
|
|
198
|
-
codemie_test_harness/tests/ui/pageobject/
|
|
199
|
-
codemie_test_harness/tests/ui/pageobject/
|
|
200
|
-
codemie_test_harness/tests/ui/pageobject/components/
|
|
201
|
-
codemie_test_harness/tests/ui/pageobject/components/
|
|
202
|
-
codemie_test_harness/tests/ui/pageobject/components/
|
|
203
|
-
codemie_test_harness/tests/ui/pageobject/components/
|
|
204
|
-
codemie_test_harness/tests/ui/pageobject/components/
|
|
205
|
-
codemie_test_harness/tests/ui/pageobject/components/
|
|
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=
|
|
210
|
-
codemie_test_harness/tests/ui/pageobject/workflows/create_workflow_page.py,sha256=
|
|
211
|
-
codemie_test_harness/tests/ui/pageobject/workflows/edit_workflow_page.py,sha256=
|
|
212
|
-
codemie_test_harness/tests/ui/pageobject/workflows/workflow_details_page.py,sha256=
|
|
213
|
-
codemie_test_harness/tests/ui/pageobject/workflows/workflow_executions_page.py,sha256=
|
|
214
|
-
codemie_test_harness/tests/ui/pageobject/workflows/workflow_template_details.py,sha256=
|
|
215
|
-
codemie_test_harness/tests/ui/pageobject/workflows/workflow_templates_page.py,sha256=
|
|
216
|
-
codemie_test_harness/tests/ui/pageobject/workflows/workflows_page.py,sha256=
|
|
217
|
-
codemie_test_harness/tests/ui/
|
|
218
|
-
codemie_test_harness/tests/ui/
|
|
219
|
-
codemie_test_harness/tests/ui/
|
|
220
|
-
codemie_test_harness/tests/ui/
|
|
221
|
-
codemie_test_harness/tests/ui/
|
|
222
|
-
codemie_test_harness/tests/ui/
|
|
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.
|
|
355
|
-
codemie_test_harness-0.1.
|
|
356
|
-
codemie_test_harness-0.1.
|
|
357
|
-
codemie_test_harness-0.1.
|
|
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,,
|
|
File without changes
|
{codemie_test_harness-0.1.167.dist-info → codemie_test_harness-0.1.169.dist-info}/entry_points.txt
RENAMED
|
File without changes
|