codemie-test-harness 0.1.182__py3-none-any.whl → 0.1.183__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 (29) hide show
  1. codemie_test_harness/tests/ui/__init__.py +1 -0
  2. codemie_test_harness/tests/ui/assistants/test_create_assistant.py +3 -11
  3. codemie_test_harness/tests/ui/chats/conftest.py +14 -0
  4. codemie_test_harness/tests/ui/chats/test_chat_configuration.py +221 -0
  5. codemie_test_harness/tests/ui/chats/test_chat_functionality.py +222 -0
  6. codemie_test_harness/tests/ui/conftest.py +25 -4
  7. codemie_test_harness/tests/ui/datasource/test_create_datasource.py +8 -8
  8. codemie_test_harness/tests/ui/datasource/test_datasource_page.py +3 -3
  9. codemie_test_harness/tests/ui/datasource/test_edit_datasource.py +7 -6
  10. codemie_test_harness/tests/ui/datasource/test_view_datasource.py +6 -7
  11. codemie_test_harness/tests/ui/integrations/test_create_integration.py +3 -3
  12. codemie_test_harness/tests/ui/pageobject/base_page.py +12 -1
  13. codemie_test_harness/tests/ui/pageobject/chats/chat_page.py +622 -0
  14. codemie_test_harness/tests/ui/pageobject/chats/chats_sidebar.py +489 -0
  15. codemie_test_harness/tests/ui/pageobject/chats/configuration_panel.py +228 -0
  16. codemie_test_harness/tests/ui/pageobject/chats/configure_and_test_panel.py +102 -0
  17. codemie_test_harness/tests/ui/pageobject/datasources/create_edit_datasource_page.py +9 -8
  18. codemie_test_harness/tests/ui/pageobject/datasources/datasource_page.py +4 -4
  19. codemie_test_harness/tests/ui/pageobject/datasources/datasource_sidebar.py +4 -3
  20. codemie_test_harness/tests/ui/pageobject/integrations/create_integration_page.py +2 -2
  21. codemie_test_harness/tests/ui/{_test_data → test_data}/assistant_test_data.py +2 -0
  22. codemie_test_harness/tests/ui/test_data/chat_test_data.py +98 -0
  23. {codemie_test_harness-0.1.182.dist-info → codemie_test_harness-0.1.183.dist-info}/METADATA +2 -2
  24. {codemie_test_harness-0.1.182.dist-info → codemie_test_harness-0.1.183.dist-info}/RECORD +29 -21
  25. /codemie_test_harness/tests/ui/{_test_data → test_data}/__init__.py +0 -0
  26. /codemie_test_harness/tests/ui/{_test_data → test_data}/datasource_test_data.py +0 -0
  27. /codemie_test_harness/tests/ui/{_test_data → test_data}/integration_test_data.py +0 -0
  28. {codemie_test_harness-0.1.182.dist-info → codemie_test_harness-0.1.183.dist-info}/WHEEL +0 -0
  29. {codemie_test_harness-0.1.182.dist-info → codemie_test_harness-0.1.183.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,228 @@
1
+ """
2
+ Chat Configuration Panel Component for CodeMie UI Testing
3
+
4
+ This module implements the chat configuration side panel component following the established
5
+ POM patterns. It provides comprehensive support for configuration management including
6
+ LLM engine selection, assistant management, and configuration testing.
7
+
8
+ Architecture follows the same patterns as other panel components:
9
+ - Property-based element locators with precise unique selectors
10
+ - Method chaining support for fluent API
11
+ - ReportPortal integration via @step decorators
12
+ - Comprehensive verification methods
13
+ """
14
+
15
+ from playwright.sync_api import expect, Locator
16
+ from reportportal_client import step
17
+
18
+ from codemie_test_harness.tests.ui.pageobject.chats.configure_and_test_panel import (
19
+ ConfigureAndTestPanel,
20
+ )
21
+
22
+
23
+ class ConfigurationPanel:
24
+ """
25
+ Chat configuration side panel component with comprehensive configuration management.
26
+
27
+ This component handles all configuration-related interactions including:
28
+ - Managing LLM engine selection
29
+ - Interacting with connected assistants
30
+ - Configuring and testing assistants
31
+ - Verification of configuration states
32
+
33
+ Follows established POM patterns with property-based locators.
34
+ """
35
+
36
+ def __init__(self, page):
37
+ self.page = page
38
+
39
+ # ==================== PANEL CONTAINER ELEMENTS ====================
40
+
41
+ @property
42
+ def panel(self) -> Locator:
43
+ """Main configuration panel container."""
44
+ # Using data-v attribute with class combination for uniqueness
45
+ return self.page.locator(".chat-info")
46
+
47
+ @property
48
+ def general_section(self) -> Locator:
49
+ """General configuration section."""
50
+ return self.panel.locator("h3").filter(has_text="General")
51
+
52
+ @property
53
+ def connected_assistants_section(self) -> Locator:
54
+ """Connected Assistants section."""
55
+ return self.panel.locator("div").filter(has_text="Connected Assistants")
56
+
57
+ # ==================== LLM ENGINE CONFIGURATION ====================
58
+
59
+ @property
60
+ def primary_llm_engine_label(self) -> Locator:
61
+ """Primary LLM Engine label."""
62
+ return self.panel.locator('label[for="model_type"].text-xs.text-text-tertiary')
63
+
64
+ @property
65
+ def primary_llm_engine_dropdown(self) -> Locator:
66
+ """Primary LLM Engine dropdown selector."""
67
+ return self.panel.locator('div.p-multiselect[id="model_type"]')
68
+
69
+ @property
70
+ def llm_engine_dropdown_trigger(self) -> Locator:
71
+ """LLM Engine dropdown trigger button."""
72
+ return self.primary_llm_engine_dropdown.locator(
73
+ 'div[data-pc-section="trigger"]'
74
+ )
75
+
76
+ @property
77
+ def llm_engine_current_selection(self) -> Locator:
78
+ """Current LLM Engine selection display."""
79
+ return self.primary_llm_engine_dropdown.locator('div[data-pc-section="label"]')
80
+
81
+ # ==================== ASSISTANT LIST ELEMENTS ====================
82
+ class ConnectedAssistantCard:
83
+ def __init__(self, page, title: str):
84
+ self.page = page
85
+ # Target assistant card by finding the card that contains the title
86
+ self.assistant_card = self.page.locator(".assistant-list-item").filter(
87
+ has=self.page.locator(".font-semibold.text-base").filter(
88
+ has_text=f"{title}"
89
+ )
90
+ )
91
+ # ID field is the element with tooltip that contains the ID
92
+ self.id_field = self.assistant_card.locator(
93
+ "div.text-text-tertiary[data-pd-tooltip]"
94
+ ).first
95
+ # Link field is the assistant link element with tooltip
96
+ self.link_field = self.assistant_card.locator(
97
+ "div.assistant-link[data-pd-tooltip]"
98
+ )
99
+ # Config button is the button with "Configure & Test" text
100
+ self.config_button = self.assistant_card.locator("button").filter(
101
+ has_text="Configure"
102
+ )
103
+
104
+ @property
105
+ def assistant_list(self) -> Locator:
106
+ """Container for all assistant list items."""
107
+ return self.panel.locator("div.assistant-list")
108
+
109
+ # ==================== PANEL INTERACTION METHODS ====================
110
+
111
+ @step
112
+ def open_llm_engine_dropdown(self):
113
+ """Open the Primary LLM Engine dropdown."""
114
+ if self.primary_llm_engine_dropdown.is_visible():
115
+ self.llm_engine_dropdown_trigger.click()
116
+ self.page.wait_for_timeout(1000)
117
+ return self
118
+
119
+ @step
120
+ def select_llm_engine_option(self, llm_name: str):
121
+ """Select an option from the LLM Engine dropdown."""
122
+ self.open_llm_engine_dropdown()
123
+
124
+ search_input = self.page.locator(".p-multiselect-filter")
125
+ search_input.fill(llm_name)
126
+ option_item = self.page.locator(f'[aria-label="{llm_name}"]')
127
+ if option_item.is_visible():
128
+ option_item.click()
129
+ else:
130
+ raise Exception(f"'{llm_name} LLM is not found!")
131
+
132
+ return self
133
+
134
+ @step
135
+ def open_assistant_configuration(self, assistant_name: str):
136
+ assistant_card = self.ConnectedAssistantCard(
137
+ page=self.page, title=assistant_name
138
+ )
139
+ assistant_card.config_button.click()
140
+ return ConfigureAndTestPanel(self.page)
141
+
142
+ # ==================== VERIFICATION METHODS ====================
143
+
144
+ @step
145
+ def should_be_visible(self):
146
+ """Verify that the configuration panel is visible."""
147
+ expect(self.panel).to_be_visible()
148
+ return self
149
+
150
+ @step
151
+ def should_be_hidden(self):
152
+ """Verify that the configuration panel is hidden."""
153
+ expect(self.panel).to_be_hidden()
154
+ return self
155
+
156
+ @step
157
+ def should_have_general_section_visible(self):
158
+ """Verify that the General section is visible."""
159
+ expect(self.general_section).to_be_visible()
160
+ return self
161
+
162
+ @step
163
+ def should_have_connected_assistants_section_visible(self):
164
+ """Verify that the Connected Assistants section is visible."""
165
+ expect(self.connected_assistants_section).to_be_visible()
166
+ return self
167
+
168
+ @step
169
+ def should_have_llm_engine_dropdown_visible(self):
170
+ """Verify that the Primary LLM Engine dropdown is visible."""
171
+ expect(self.primary_llm_engine_dropdown).to_be_visible()
172
+ return self
173
+
174
+ @step
175
+ def should_have_llm_engine_selection(self, expected_text: str):
176
+ """
177
+ Verify the LLM Engine dropdown shows expected selection.
178
+
179
+ Args:
180
+ expected_text: Expected selection text (e.g., "Default: GPT-4.1 2025-04-14")
181
+ """
182
+ expect(self.llm_engine_current_selection).to_contain_text(expected_text)
183
+ return self
184
+
185
+ @step
186
+ def should_have_assistant_list_visible(
187
+ self,
188
+ ):
189
+ expect(self.assistant_list).to_be_visible()
190
+ return self
191
+
192
+ @step
193
+ def should_have_assistant_visible(self, assistant_name: str):
194
+ """
195
+ Verify that a specific assistant is visible.
196
+
197
+ Args:
198
+ assistant_name: Name of the assistant to verify
199
+ """
200
+ assistant_card = self.ConnectedAssistantCard(
201
+ page=self.page, title=assistant_name
202
+ )
203
+ expect(assistant_card.id_field).to_be_visible()
204
+ expect(assistant_card.link_field).to_be_visible()
205
+ expect(assistant_card.config_button).to_be_visible()
206
+ return self
207
+
208
+ @step
209
+ def should_have_all_sections_visible(self):
210
+ """Verify that all main panel sections are visible."""
211
+ self.should_have_general_section_visible()
212
+ self.should_have_connected_assistants_section_visible()
213
+ self.should_have_llm_engine_dropdown_visible()
214
+ self.should_have_assistant_list_visible()
215
+ self.should_have_assistant_visible("AI/Run Chatbot")
216
+ return self
217
+
218
+ # ==================== UTILITY METHODS ====================
219
+
220
+ @step
221
+ def is_visible(self) -> bool:
222
+ """Check if the configuration panel is currently visible."""
223
+ return self.panel.is_visible()
224
+
225
+ @step
226
+ def get_current_llm_engine_selection(self) -> str:
227
+ """Get the current LLM Engine selection text."""
228
+ return self.llm_engine_current_selection.text_content()
@@ -0,0 +1,102 @@
1
+ """
2
+ Assistant Configure & Test Panel Component for CodeMie UI Testing
3
+ """
4
+
5
+ from playwright.sync_api import expect, Locator
6
+ from reportportal_client import step
7
+
8
+
9
+ class ConfigureAndTestPanel:
10
+ """
11
+ Assistant Configure & Test side panel component with comprehensive configuration management.
12
+
13
+ This component handles all configuration-related interactions including.
14
+
15
+ Follows established POM patterns with property-based locators.
16
+ """
17
+
18
+ def __init__(self, page):
19
+ self.page = page
20
+
21
+ # ==================== PANEL CONTAINER ELEMENTS ====================
22
+
23
+ @property
24
+ def panel(self) -> Locator:
25
+ """Panel main container."""
26
+ return self.page.locator(".h-full .bg-sidebar")
27
+
28
+ @property
29
+ def panel_title(self) -> Locator:
30
+ return self.panel.locator("h4")
31
+
32
+ @property
33
+ def cancel_button(self) -> Locator:
34
+ return self.panel.locator("button").filter(has_text="Cancel")
35
+
36
+ @property
37
+ def save_button(self) -> Locator:
38
+ return self.panel.locator("button").filter(has_text="Save")
39
+
40
+ @property
41
+ def system_prompt_current_section(self) -> Locator:
42
+ """System Prompt current version section."""
43
+ return self.panel.locator("div#current")
44
+
45
+ @property
46
+ def system_prompt_edit_field(self) -> Locator:
47
+ """System Prompt editing field section."""
48
+ return self.system_prompt_current_section.locator("textarea#system_prompt")
49
+
50
+ # ==================== VERIFICATION METHODS ====================
51
+
52
+ @step
53
+ def should_be_visible(self):
54
+ """Verify that the configuration panel is visible."""
55
+ expect(self.panel).to_be_visible()
56
+ return self
57
+
58
+ @step
59
+ def should_be_hidden(self):
60
+ """Verify that the configuration panel is hidden."""
61
+ expect(self.panel).to_be_hidden()
62
+ return self
63
+
64
+ @step
65
+ def should_have_system_prompt_section_visible(self):
66
+ """Verify that the System prompt section is visible."""
67
+ expect(self.system_prompt_current_section).to_be_visible()
68
+ return self
69
+
70
+ @step
71
+ def should_have_all_sections_visible(self):
72
+ """Verify that all main panel sections are visible."""
73
+ expect(self.panel_title).to_be_visible()
74
+ expect(self.cancel_button).to_be_visible()
75
+ expect(self.save_button).to_be_visible()
76
+ self.should_have_system_prompt_section_visible()
77
+ expect(self.system_prompt_edit_field).to_be_visible()
78
+ return self
79
+
80
+ @step
81
+ def should_have_system_prompt(self, system_prompt_text: str):
82
+ """Verify that the System prompt text matches param"""
83
+ expect(self.system_prompt_edit_field).to_have_value(system_prompt_text)
84
+ return self
85
+
86
+ # ==================== INTERACTION METHODS ====================
87
+
88
+ @step
89
+ def update_system_prompt(self, new_sys_prompt: str):
90
+ self.system_prompt_edit_field.clear()
91
+ self.system_prompt_edit_field.fill(new_sys_prompt)
92
+ return self
93
+
94
+ @step
95
+ def save_changes(self):
96
+ self.save_button.click()
97
+ return self
98
+
99
+ @step
100
+ def cancel_changes(self):
101
+ self.cancel_button.click()
102
+ return self
@@ -1,13 +1,20 @@
1
1
  from typing import Optional
2
2
 
3
- from codemie_test_harness.tests.ui.pageobject.base_page import BasePage
4
3
  from playwright.sync_api import expect
5
4
  from reportportal_client import step
5
+
6
6
  from codemie_test_harness.tests.test_data.google_datasource_test_data import (
7
7
  GOOGLE_DOC_URL,
8
8
  GOOGLE_GUIDE_URL,
9
9
  )
10
- from codemie_test_harness.tests.ui._test_data.datasource_test_data import (
10
+ from codemie_test_harness.tests.ui.pageobject.base_page import BasePage
11
+ from codemie_test_harness.tests.ui.pageobject.components.project_selector import (
12
+ ProjectSelector,
13
+ )
14
+ from codemie_test_harness.tests.ui.pageobject.datasources.datasource_sidebar import (
15
+ DataSourceSidebar,
16
+ )
17
+ from codemie_test_harness.tests.ui.test_data.datasource_test_data import (
11
18
  DataSourceType,
12
19
  SUMMARIZATION_METHODS_LIST,
13
20
  EMBEDDING_MODELS_LIST,
@@ -24,12 +31,6 @@ from codemie_test_harness.tests.ui._test_data.datasource_test_data import (
24
31
  EMPTY_FILE_ERROR,
25
32
  EMPTY_GOOGLE_LINK_ERROR,
26
33
  )
27
- from codemie_test_harness.tests.ui.pageobject.components.project_selector import (
28
- ProjectSelector,
29
- )
30
- from codemie_test_harness.tests.ui.pageobject.datasources.datasource_sidebar import (
31
- DataSourceSidebar,
32
- )
33
34
  from codemie_test_harness.tests.utils.base_utils import get_random_name
34
35
 
35
36
 
@@ -1,16 +1,16 @@
1
1
  import re
2
2
 
3
3
  from hamcrest import has_length, assert_that, greater_than_or_equal_to
4
- from reportportal_client import step
5
4
  from playwright.sync_api import expect
5
+ from reportportal_client import step
6
6
 
7
7
  from codemie_test_harness.tests.ui.pageobject.base_page import BasePage
8
- from codemie_test_harness.tests.ui._test_data.datasource_test_data import (
9
- DATAS_SOURCE_COLUMN_LIST,
10
- )
11
8
  from codemie_test_harness.tests.ui.pageobject.datasources.datasource_sidebar import (
12
9
  DataSourceSidebar,
13
10
  )
11
+ from codemie_test_harness.tests.ui.test_data.datasource_test_data import (
12
+ DATAS_SOURCE_COLUMN_LIST,
13
+ )
14
14
 
15
15
 
16
16
  class DataSourcePage(BasePage):
@@ -1,12 +1,13 @@
1
- from reportportal_client import step
2
1
  from playwright.sync_api import expect
3
- from codemie_test_harness.tests.ui._test_data.datasource_test_data import (
2
+ from reportportal_client import step
3
+
4
+ from codemie_test_harness.tests.ui.pageobject.base_page import BasePage
5
+ from codemie_test_harness.tests.ui.test_data.datasource_test_data import (
4
6
  DATA_SOURCE_FILTER_STATUSES_LIST,
5
7
  DATA_SOURCE_FILTER_TYPES_LIST,
6
8
  PROJECT_LABEL,
7
9
  STATUS_LABEL,
8
10
  )
9
- from codemie_test_harness.tests.ui.pageobject.base_page import BasePage
10
11
 
11
12
 
12
13
  class DataSourceSidebar(BasePage):
@@ -7,10 +7,10 @@ from codemie_sdk.models.integration import CredentialTypes
7
7
  from playwright.sync_api import expect, Locator
8
8
  from reportportal_client import step
9
9
 
10
- from codemie_test_harness.tests.ui._test_data.integration_test_data import (
10
+ from codemie_test_harness.tests.ui.pageobject.base_page import BasePage
11
+ from codemie_test_harness.tests.ui.test_data.integration_test_data import (
11
12
  IntegrationTestData,
12
13
  )
13
- from codemie_test_harness.tests.ui.pageobject.base_page import BasePage
14
14
 
15
15
 
16
16
  # noinspection PyArgumentList
@@ -195,3 +195,5 @@ COMMON_ICON_URLS = {
195
195
  }
196
196
 
197
197
  ICON_URL = "https://raw.githubusercontent.com/epam-gen-ai-run/ai-run-install/main/docs/assets/ai/AQAUiTestGenerator.png"
198
+
199
+ GENERAL_PROMPT = "You are a helpful integration test assistant"
@@ -0,0 +1,98 @@
1
+ """
2
+ Test Data for Chat UI Tests
3
+
4
+ This module provides test data generation and management for chat-related UI tests.
5
+ Following best practices by separating test data from test logic and providing
6
+ reusable data factories for consistent testing.
7
+
8
+ Architecture follows the same patterns as other test data modules in the framework.
9
+ """
10
+
11
+ from dataclasses import dataclass
12
+
13
+
14
+ @dataclass
15
+ class ChatTestMessage:
16
+ """
17
+ Data class for chat message test data.
18
+
19
+ Encapsulates message content and metadata for chat testing scenarios.
20
+ """
21
+
22
+ content: str
23
+ expected_response: str
24
+
25
+
26
+ class ChatTestDataFactory:
27
+ """
28
+ Factory class for generating chat test data.
29
+
30
+ This factory provides various methods to create different types of
31
+ chat test data for different testing scenarios.
32
+ """
33
+
34
+ @staticmethod
35
+ def create_simple_test_message() -> ChatTestMessage:
36
+ """
37
+ Create a simple test message for basic chat functionality testing.
38
+
39
+ Returns:
40
+ ChatTestMessage: Simple test message data
41
+ """
42
+ return ChatTestMessage(
43
+ content="Hello, this is a test message for chat functionality validation.",
44
+ expected_response="",
45
+ )
46
+
47
+ @staticmethod
48
+ def create_coding_help_message() -> ChatTestMessage:
49
+ """
50
+ Create a coding-related question message.
51
+ """
52
+ return ChatTestMessage(
53
+ content="Hello, I need help with a coding question.",
54
+ expected_response="",
55
+ )
56
+
57
+ @staticmethod
58
+ def create_coding_question_message() -> ChatTestMessage:
59
+ """
60
+ Create a coding-related question message.
61
+ """
62
+ return ChatTestMessage(
63
+ content="Can you help me understand Python decorators?",
64
+ expected_response="",
65
+ )
66
+
67
+
68
+ # ==================== CONVENIENCE FUNCTIONS ====================
69
+
70
+
71
+ def get_simple_test_message() -> ChatTestMessage:
72
+ """Convenience function to get simple test message."""
73
+ return ChatTestDataFactory.create_simple_test_message()
74
+
75
+
76
+ def get_coding_help_message() -> ChatTestMessage:
77
+ """Convenience function to get coding help message."""
78
+ return ChatTestDataFactory.create_coding_help_message()
79
+
80
+
81
+ def get_coding_question_message() -> ChatTestMessage:
82
+ """Convenience function to get coding question message."""
83
+ return ChatTestDataFactory.create_coding_question_message()
84
+
85
+
86
+ # ==================== TEST DATA CONSTANTS ====================
87
+
88
+ # Common test messages for reuse
89
+ COMMON_TEST_MESSAGES = {
90
+ "hello": "Hello, how can you help me today?",
91
+ "coding_help": "Can you help me debug this Python code?",
92
+ "documentation": "Please help me write documentation for this API.",
93
+ "code_review": "Can you review this code and suggest improvements?",
94
+ "testing_help": "What are the best practices for unit testing?",
95
+ "architecture": "How should I design a microservices architecture?",
96
+ }
97
+
98
+ LLM_ENGINES = ["Bedrock Claude 4 Sonnet"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: codemie-test-harness
3
- Version: 0.1.182
3
+ Version: 0.1.183
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.182)
16
+ Requires-Dist: codemie-sdk-python (==0.1.183)
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)
@@ -196,27 +196,30 @@ codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_sy
196
196
  codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_tools_id.yaml,sha256=FGfTnDmJSTZZ7fvFqFRNqVbk_jQEk5k4oY3hFlYxec0,267
197
197
  codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_tools_name.yaml,sha256=Xh6TKSAGZyD2-gCxaW7BRW_9-_7-5EQA75djCc3FwLI,263
198
198
  codemie_test_harness/tests/test_data/workflow_validation_messages.py,sha256=zg5BhMJ_tbzEeLSYJEnspHTuWar1qgoxqTfIXltlSPg,3282
199
- codemie_test_harness/tests/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
200
- codemie_test_harness/tests/ui/_test_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
201
- codemie_test_harness/tests/ui/_test_data/assistant_test_data.py,sha256=DRfungbLNwbFQf6qTNOVjR3l2v7fBDzgUq1v9fwXw78,6829
202
- codemie_test_harness/tests/ui/_test_data/datasource_test_data.py,sha256=Ubx8o1NPxiJ2adaz6IDpwXDKB9_yE40v5_0az__CX0I,3489
203
- codemie_test_harness/tests/ui/_test_data/integration_test_data.py,sha256=6YnDIWhOSTSmzIziBCfpqYikVT0kXw_vMrMJBmhnSnQ,4212
199
+ codemie_test_harness/tests/ui/__init__.py,sha256=Xqfl0zEG1wUyz8Qm4ZsFqmkp7KtZv91xtxkm-ue4SQ4,22
204
200
  codemie_test_harness/tests/ui/assistants/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
205
- codemie_test_harness/tests/ui/assistants/test_create_assistant.py,sha256=HFyKXFyla3jROVG6wPvbfE2Rpn0lsOX3iBSJRsfgmhA,14527
206
- codemie_test_harness/tests/ui/conftest.py,sha256=KBM3g-lxPQEtbNh6i-1bAYYRlVycbEXg7ztn3x7VobI,4361
201
+ codemie_test_harness/tests/ui/assistants/test_create_assistant.py,sha256=kbb9DXKFK3eTx00uMiyTTEprQ-Z3HBiOd0H7DDut7x0,14297
202
+ codemie_test_harness/tests/ui/chats/conftest.py,sha256=0we4CT71wycq2B1aPi0DrLo5IAtHFV-HSzhGd0GoQaE,389
203
+ codemie_test_harness/tests/ui/chats/test_chat_configuration.py,sha256=9nmHA_fzxvL5ALEUkhRie9hNUPmrDNhnmfFxxyZCFG0,7152
204
+ codemie_test_harness/tests/ui/chats/test_chat_functionality.py,sha256=DLql4eYXOW_mbmvHtcWqbgdhc3agCglDi7jjxF8fjGg,7675
205
+ codemie_test_harness/tests/ui/conftest.py,sha256=6IQqjL7pbnqXn9-Dr_mY4lD36VtOHw4LILjYD3LX6_s,5128
207
206
  codemie_test_harness/tests/ui/datasource/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
208
- codemie_test_harness/tests/ui/datasource/test_create_datasource.py,sha256=o52lmMuachvlA10rTkOnTeSCPfWGIT1Y7eavyVNAUfc,6425
209
- codemie_test_harness/tests/ui/datasource/test_datasource_page.py,sha256=zsjWp8x0oqtKXNVoS5QuQa6P9xoJk9DltQWer82tpXA,2326
210
- codemie_test_harness/tests/ui/datasource/test_edit_datasource.py,sha256=x9_u_GA4P0bxGgmQbm6z3n4J7dpJxAIGD3PUQb02CN0,6424
211
- codemie_test_harness/tests/ui/datasource/test_view_datasource.py,sha256=dw3cWslcfHYjCrWebCAmqXmgYorsyggx6TAkQLYq_hY,7771
207
+ codemie_test_harness/tests/ui/datasource/test_create_datasource.py,sha256=2WLY52i02Yw2sKYGL4aJt7ozUzZCF_y_aLu2rp53uMo,6424
208
+ codemie_test_harness/tests/ui/datasource/test_datasource_page.py,sha256=X1f5XuGc30Xxlq4LnVAFDgdG8n8FUQoFShU6JOE2WVY,2325
209
+ codemie_test_harness/tests/ui/datasource/test_edit_datasource.py,sha256=-1UAZ113WEMDMt9PO2e4mA_B8DpBUMVXSruQfeyeJ6Q,6424
210
+ codemie_test_harness/tests/ui/datasource/test_view_datasource.py,sha256=MfO3U_QN8btoG6ILZbtv5Hqf55hmRmog9PzK4avQd_o,7769
212
211
  codemie_test_harness/tests/ui/integrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
213
- codemie_test_harness/tests/ui/integrations/test_create_integration.py,sha256=K0YzgpCgQInyGvSRZBLnS89IckWSX3qzbjTUkkuQm3U,11935
212
+ codemie_test_harness/tests/ui/integrations/test_create_integration.py,sha256=esndMHGdpJbKEjHNd8fvhhzWD0W5-wEhmlF0hiRwXnw,11934
214
213
  codemie_test_harness/tests/ui/pageobject/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
215
214
  codemie_test_harness/tests/ui/pageobject/assistants/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
216
215
  codemie_test_harness/tests/ui/pageobject/assistants/assistants_page.py,sha256=E3aEXpmMhjcmJsO_nE52WdbHXOoK-Hp9vqIw4rEPzrU,6043
217
216
  codemie_test_harness/tests/ui/pageobject/assistants/create_assistant_page.py,sha256=xGl5nZAwJJtZ_ej2ycYgywK9EBGj_-AXCW4Z_eEWgYA,21791
218
217
  codemie_test_harness/tests/ui/pageobject/assistants/generate_with_ai_modal.py,sha256=rsavzWxmawKzI4wHxixp49IN6m_ZUZNFTJTSnE8jBr8,13732
219
- codemie_test_harness/tests/ui/pageobject/base_page.py,sha256=UJhY9WkCn_GaXvdMXL1oFcmpZkfokz8rnOWYMqdTCF0,8732
218
+ codemie_test_harness/tests/ui/pageobject/base_page.py,sha256=z8jqR_qqcwI0kMkcigG68KK3zWjMUbx0DWSFu2d7WsQ,9073
219
+ codemie_test_harness/tests/ui/pageobject/chats/chat_page.py,sha256=MoviVb9JAeXWX15GtqLxrH4KOR8DmWhrCztpWWtum4M,21307
220
+ codemie_test_harness/tests/ui/pageobject/chats/chats_sidebar.py,sha256=zSYAD8N-5JasElwlRm9iFhIR8XvZlCy5vRm9z3-r1ls,17361
221
+ codemie_test_harness/tests/ui/pageobject/chats/configuration_panel.py,sha256=rKv8jUxg7nLzmgD6n08DYy2fbHmviuvP13wUH2P6TRg,8171
222
+ codemie_test_harness/tests/ui/pageobject/chats/configure_and_test_panel.py,sha256=9qgwsyy_Pk50is3933CuVxUtuETyy3x_byOctIInM7w,3156
220
223
  codemie_test_harness/tests/ui/pageobject/components/__init__.py,sha256=6scUFCL2StHbKIoNgGGZdpeDZUwbCrKIH7hwaskAB4E,577
221
224
  codemie_test_harness/tests/ui/pageobject/components/execution_history_row.py,sha256=aGHc5AOpGR0tlfmLQfk8272TN6TWiuiXHUcg6PtB1Iw,6499
222
225
  codemie_test_harness/tests/ui/pageobject/components/integration_row.py,sha256=TCS6Si1Di6nrU9TTstcc4bxPztIqaWo11JxFzdqPX_c,8492
@@ -229,11 +232,11 @@ codemie_test_harness/tests/ui/pageobject/components/workflow_execution_state.py,
229
232
  codemie_test_harness/tests/ui/pageobject/components/workflow_sidebar.py,sha256=vd7IW7PC7cmvib-bnp6XwIUseEwWoX_Y3Qo_UVkYR5A,17167
230
233
  codemie_test_harness/tests/ui/pageobject/components/workflow_state_card.py,sha256=V7V1p3FNPrwVFM0CjZeg0MUkW9bGoF8UP5DuuH-r4gU,11548
231
234
  codemie_test_harness/tests/ui/pageobject/datasources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
232
- codemie_test_harness/tests/ui/pageobject/datasources/create_edit_datasource_page.py,sha256=a8QTRRgVJ_Iyk4c-G1bZV4PrP24EtTtXX6KaCQE7jzQ,23866
233
- codemie_test_harness/tests/ui/pageobject/datasources/datasource_page.py,sha256=UZDAkZ0SvWSGztPl9Jm5UtWm_-CRPFjtwWEkx0zXQN0,7847
234
- codemie_test_harness/tests/ui/pageobject/datasources/datasource_sidebar.py,sha256=qpXux9oWDMlRM0vccLT_Yr5YZDPoaNm7rvFhQEjBWh8,9686
235
+ codemie_test_harness/tests/ui/pageobject/datasources/create_edit_datasource_page.py,sha256=TGQO6UmMnA5ws1qwXWKs-2pWNA0zAVmyLGMFJIELNr0,23866
236
+ codemie_test_harness/tests/ui/pageobject/datasources/datasource_page.py,sha256=j0jgqKuWGd4CaM6KIqpp4r7DQBzyZ3pYwyxiQfylfBU,7846
237
+ codemie_test_harness/tests/ui/pageobject/datasources/datasource_sidebar.py,sha256=N51GwZZbsDjp1SALjgBYavTOQZ6CDLsDJXQ_EVhovqU,9686
235
238
  codemie_test_harness/tests/ui/pageobject/datasources/view_datasource_page.py,sha256=NgFpShy3lOJR-TuwiVeoU17Sxq0Lrv0eb7a9h8ILUQs,11302
236
- codemie_test_harness/tests/ui/pageobject/integrations/create_integration_page.py,sha256=3-iI3WntzJRxkdjw6HwQkaz3TI3pAWWRkfJvBcb6klk,24911
239
+ codemie_test_harness/tests/ui/pageobject/integrations/create_integration_page.py,sha256=hi6eisMz6P6KHUQtaoHZd54m2t0xLo28p5V0gXmPIeI,24910
237
240
  codemie_test_harness/tests/ui/pageobject/integrations/integrations_page.py,sha256=Dsik34qzL8uK2KyIlKU--OFm61WyAWZTPBD__nwsBTM,13658
238
241
  codemie_test_harness/tests/ui/pageobject/login_page.py,sha256=cs0nYtvYykXfli9vYKWPpIWOEQbksUDUGgq03hulfSg,3062
239
242
  codemie_test_harness/tests/ui/pageobject/workflows/__init__.py,sha256=UaVz3N_M1qG3EetktyQVM1j03_6XNEmGgyO2W5clLoo,519
@@ -245,6 +248,11 @@ codemie_test_harness/tests/ui/pageobject/workflows/workflow_executions_page.py,s
245
248
  codemie_test_harness/tests/ui/pageobject/workflows/workflow_template_details.py,sha256=6Su0yLA8wDybCPVE2WFhV6l6r_38aYaRY0mEYnLHlYg,3556
246
249
  codemie_test_harness/tests/ui/pageobject/workflows/workflow_templates_page.py,sha256=J5jxdZ2aQ9k15ghyRKYACxX2F9NiR6dXYBw0EaYlaN0,2645
247
250
  codemie_test_harness/tests/ui/pageobject/workflows/workflows_page.py,sha256=yqdaSTA4aUeD-8A9Or0OgJZhMr2tDvDWWP_f4uPL5dw,11186
251
+ codemie_test_harness/tests/ui/test_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
252
+ codemie_test_harness/tests/ui/test_data/assistant_test_data.py,sha256=-tpuOrLe-fD3FbVQkIMbGtfSOJSwcNIJoPmZb20Dfyw,6894
253
+ codemie_test_harness/tests/ui/test_data/chat_test_data.py,sha256=QEic3RgHxKy2dZhbLL9412r0uvYb1kQ0KPm2yzEZ-oU,2966
254
+ codemie_test_harness/tests/ui/test_data/datasource_test_data.py,sha256=Ubx8o1NPxiJ2adaz6IDpwXDKB9_yE40v5_0az__CX0I,3489
255
+ codemie_test_harness/tests/ui/test_data/integration_test_data.py,sha256=6YnDIWhOSTSmzIziBCfpqYikVT0kXw_vMrMJBmhnSnQ,4212
248
256
  codemie_test_harness/tests/ui/workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
249
257
  codemie_test_harness/tests/ui/workflows/test_create_workflow.py,sha256=fCq3Dz9fSGmIS0C_gLSDPuLomSunxSI_XlTEszO2iG0,10486
250
258
  codemie_test_harness/tests/ui/workflows/test_edit_workflow.py,sha256=kJUPqqmJB7aN-J1Dfvgk2M0N3OQcShXLlfUcTEuWD4I,12868
@@ -383,7 +391,7 @@ codemie_test_harness/tests/workflow/virtual_assistant_tools/servicenow/__init__.
383
391
  codemie_test_harness/tests/workflow/virtual_assistant_tools/servicenow/test_workflow_with_servicenow_tools.py,sha256=JXjpdBTd8QH85UQaQ8z0mbBQzJUasNKKTw9-a84uvxA,959
384
392
  codemie_test_harness/tests/workflow/virtual_assistant_tools/vcs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
385
393
  codemie_test_harness/tests/workflow/virtual_assistant_tools/vcs/test_workflow_with_vcs_tools.py,sha256=xgEZlZya6H8HvYhAtN0-9yIsTjuPSYfZ0IPGL7WI06Q,1168
386
- codemie_test_harness-0.1.182.dist-info/METADATA,sha256=KCWD6m0MQb3RCui8Yb5Nre8qLtgDQ9j_ToUHeARF-Dc,18261
387
- codemie_test_harness-0.1.182.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
388
- codemie_test_harness-0.1.182.dist-info/entry_points.txt,sha256=n98t-EOM5M1mnMl_j2X4siyeO9zr0WD9a5LF7JyElIM,73
389
- codemie_test_harness-0.1.182.dist-info/RECORD,,
394
+ codemie_test_harness-0.1.183.dist-info/METADATA,sha256=qK21bJYD9MF2lDtmkQLqdt-96jOFuRE-8KQADfXcKnI,18261
395
+ codemie_test_harness-0.1.183.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
396
+ codemie_test_harness-0.1.183.dist-info/entry_points.txt,sha256=n98t-EOM5M1mnMl_j2X4siyeO9zr0WD9a5LF7JyElIM,73
397
+ codemie_test_harness-0.1.183.dist-info/RECORD,,