codemie-test-harness 0.1.177__py3-none-any.whl → 0.1.179__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/assistant/default_integrations/test_default_integrations_for_tool_kit.py +2 -2
  2. codemie_test_harness/tests/test_data/ado_work_item_tools_test_data.py +3 -3
  3. codemie_test_harness/tests/test_data/google_datasource_test_data.py +4 -1
  4. codemie_test_harness/tests/ui/_test_data/datasource_test_data.py +125 -0
  5. codemie_test_harness/tests/ui/datasource/__init__.py +0 -0
  6. codemie_test_harness/tests/ui/datasource/test_create_datasource.py +191 -0
  7. codemie_test_harness/tests/ui/datasource/test_datasource_page.py +61 -0
  8. codemie_test_harness/tests/ui/datasource/test_edit_datasource.py +184 -0
  9. codemie_test_harness/tests/ui/datasource/test_view_datasource.py +222 -0
  10. codemie_test_harness/tests/ui/pageobject/assistants/assistants_page.py +1 -1
  11. codemie_test_harness/tests/ui/pageobject/base_page.py +31 -5
  12. codemie_test_harness/tests/ui/pageobject/components/project_selector.py +116 -0
  13. codemie_test_harness/tests/ui/pageobject/components/workflow_sidebar.py +1 -1
  14. codemie_test_harness/tests/ui/pageobject/datasources/__init__.py +0 -0
  15. codemie_test_harness/tests/ui/pageobject/datasources/create_edit_datasource_page.py +778 -0
  16. codemie_test_harness/tests/ui/pageobject/datasources/datasource_page.py +237 -0
  17. codemie_test_harness/tests/ui/pageobject/datasources/datasource_sidebar.py +303 -0
  18. codemie_test_harness/tests/ui/pageobject/datasources/view_datasource_page.py +337 -0
  19. codemie_test_harness/tests/utils/datasource_utils.py +13 -18
  20. codemie_test_harness/tests/workflow/assistant_tools/default_integrations/test_default_integrations_for_tool_kit.py +2 -2
  21. codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_vcs_tools.py +2 -0
  22. codemie_test_harness/tests/workflow/virtual_assistant_tools/default_integrations/test_default_integrations_for_tool_kit.py +2 -2
  23. {codemie_test_harness-0.1.177.dist-info → codemie_test_harness-0.1.179.dist-info}/METADATA +2 -2
  24. {codemie_test_harness-0.1.177.dist-info → codemie_test_harness-0.1.179.dist-info}/RECORD +27 -16
  25. codemie_test_harness/tests/ui/pytest.ini +0 -18
  26. /codemie_test_harness/tests/assistant/tools/{mcp → plugin}/test_single_assistant_dual_time_plugins.py +0 -0
  27. {codemie_test_harness-0.1.177.dist-info → codemie_test_harness-0.1.179.dist-info}/WHEEL +0 -0
  28. {codemie_test_harness-0.1.177.dist-info → codemie_test_harness-0.1.179.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,337 @@
1
+ #
2
+ from codemie_test_harness.tests.ui.pageobject.base_page import BasePage
3
+ from hamcrest import greater_than_or_equal_to, assert_that
4
+ from playwright.sync_api import expect
5
+ from reportportal_client import step
6
+ from codemie_test_harness.tests.ui.pageobject.datasources.datasource_sidebar import (
7
+ DataSourceSidebar,
8
+ )
9
+
10
+
11
+ class ViewDatasourcePage(BasePage):
12
+ """
13
+ Page object for the 'View DataSource' details page.
14
+ Contains all major section locators and verification methods (with text checks).
15
+ """
16
+
17
+ def __init__(self, page):
18
+ self.sidebar = DataSourceSidebar(page)
19
+ self.page = page
20
+
21
+ # Main Page Elements
22
+ @property
23
+ def back_button(self):
24
+ return self.page.locator("div.h-layout-header button").first
25
+
26
+ @property
27
+ def main_title(self):
28
+ return self.page.locator("h1.text-h3.text-white.font-semibold")
29
+
30
+ # Name/Owner/Shared
31
+ @property
32
+ def datasource_name(self):
33
+ return self.page.locator("h4.text-2xl.font-semibold.font-mono")
34
+
35
+ @property
36
+ def owner_text(self):
37
+ return self.page.locator("div.flex.gap-4.text-xs.text-text-secondary p").first
38
+
39
+ @property
40
+ def shared_status(self):
41
+ return self.page.locator(
42
+ "span.text-xs.text-switch-label, span.flex.items-center.gap-1"
43
+ )
44
+
45
+ # Overview Section
46
+ @property
47
+ def overview_label(self):
48
+ return self.page.locator(
49
+ "p.text-xs.text-text-main.font-semibold", has_text="OVERVIEW"
50
+ )
51
+
52
+ @property
53
+ def project_value(self):
54
+ return self.page.locator("div.gap-x-3 p:text('Project:') + p")
55
+
56
+ @property
57
+ def datasource_type_value(self):
58
+ return self.page.locator("div.gap-x-3 p:text('Data Source Type:') + p")
59
+
60
+ @property
61
+ def datasource_id_field(self):
62
+ return self.page.locator(
63
+ "div.flex.flex-col.gap-2.mt-2.uppercase input[readonly]"
64
+ )
65
+
66
+ # Description
67
+ @property
68
+ def description_label(self):
69
+ return self.page.locator("h5.font-bold.text-xs.mb-2", has_text="Description")
70
+
71
+ @property
72
+ def description_text(self):
73
+ return self.description_label.locator("xpath=../div")
74
+
75
+ # Configuration Section
76
+ @property
77
+ def configuration_label(self):
78
+ return self.page.locator(
79
+ "p.text-xs.text-text-main.font-semibold", has_text="CONFIGURATION"
80
+ )
81
+
82
+ @property
83
+ def embeddings_model_label(self):
84
+ return self.page.locator(
85
+ "p.text-xs.text-text-tertiary", has_text="Embeddings model:"
86
+ )
87
+
88
+ @property
89
+ def embeddings_model_value(self):
90
+ return self.embeddings_model_label.locator("+ div")
91
+
92
+ @property
93
+ def summarization_model_label(self):
94
+ return self.page.locator(
95
+ "p.text-xs.text-text-tertiary", has_text="Summarization model:"
96
+ )
97
+
98
+ @property
99
+ def summarization_model_value(self):
100
+ return self.summarization_model_label.locator("+ div")
101
+
102
+ # Usage Details Section
103
+ @property
104
+ def usage_label(self):
105
+ return self.page.locator(
106
+ "p.text-xs.text-text-main.font-semibold", has_text="USAGE DETAILS"
107
+ )
108
+
109
+ @property
110
+ def input_tokens_label(self):
111
+ return self.page.locator(
112
+ "p.text-xs.text-text-tertiary", has_text="Input tokens used:"
113
+ )
114
+
115
+ @property
116
+ def input_tokens_value(self):
117
+ return self.input_tokens_label.locator("xpath=../div")
118
+
119
+ @property
120
+ def output_tokens_label(self):
121
+ return self.page.locator(
122
+ "p.text-xs.text-text-tertiary", has_text="Output tokens used:"
123
+ )
124
+
125
+ @property
126
+ def output_tokens_value(self):
127
+ return self.output_tokens_label.locator("xpath=../div")
128
+
129
+ @property
130
+ def money_spent_label(self):
131
+ return self.page.locator(
132
+ "p.text-xs.text-text-tertiary", has_text="Money spent:"
133
+ )
134
+
135
+ @property
136
+ def money_spent_value(self):
137
+ return self.money_spent_label.locator("xpath=../div")
138
+
139
+ # Processing Summary
140
+ @property
141
+ def processing_summary_label(self):
142
+ return self.page.locator(
143
+ "h5.font-bold.text-xs.leading-none.font-mono", has_text="Processing Summary"
144
+ )
145
+
146
+ @property
147
+ def total_documents_label(self):
148
+ return self.page.locator(
149
+ "div.font-mono.text-ds-field-title", has_text="Total documents:"
150
+ )
151
+
152
+ @property
153
+ def total_documents_count(self):
154
+ return self.total_documents_label.locator("xpath=../span")
155
+
156
+ @property
157
+ def processed_documents_label(self):
158
+ return self.page.locator(
159
+ "div.font-mono.text-ds-field-title", has_text="Processed Documents Count:"
160
+ )
161
+
162
+ @property
163
+ def processed_documents_count(self):
164
+ return self.processed_documents_label.locator("xpath=../span")
165
+
166
+ @property
167
+ def imported_chunks_label(self):
168
+ return self.page.locator(
169
+ "div.font-mono.text-ds-field-title", has_text="Imported Chunks Count:"
170
+ )
171
+
172
+ @property
173
+ def imported_chunks_count(self):
174
+ return self.imported_chunks_label.locator("xpath=../span")
175
+
176
+ @property
177
+ def skipped_documents_label(self):
178
+ return self.page.locator(
179
+ "div.font-mono.text-ds-field-title", has_text="Skipped Documents:"
180
+ )
181
+
182
+ @property
183
+ def skipped_documents_count(self):
184
+ return self.skipped_documents_label.locator("xpath=../span")
185
+
186
+ @property
187
+ def total_size_kb_label(self):
188
+ return self.page.locator(
189
+ "div.font-mono.text-ds-field-title", has_text="Total Size KB:"
190
+ )
191
+
192
+ @property
193
+ def total_size_kb_count(self):
194
+ return self.total_size_kb_label.locator("xpath=../span")
195
+
196
+ @property
197
+ def average_file_size_b_label(self):
198
+ return self.page.locator(
199
+ "div.font-mono.text-ds-field-title", has_text="Average File Size B:"
200
+ )
201
+
202
+ @property
203
+ def average_file_size_b_count(self):
204
+ return self.average_file_size_b_label.locator("xpath=../span")
205
+
206
+ # Processed Data
207
+ @property
208
+ def processed_data_tab_label(self):
209
+ return self.page.locator("ul li a.p-menuitem-link", has_text="Processed Data")
210
+
211
+ @property
212
+ def processed_data_label(self):
213
+ return self.page.locator("h5.text-xs", has_text="Processed Data")
214
+
215
+ @property
216
+ def processed_data_list(self):
217
+ return self.page.locator("ul.bg-new-panel li")
218
+
219
+ # --- Verification Methods ---
220
+
221
+ @step
222
+ def should_see_title_and_back_button(self):
223
+ expect(self.main_title).to_have_text("Data Source Details")
224
+ expect(self.back_button).to_be_visible()
225
+ return self
226
+
227
+ @step
228
+ def should_see_ds_name_and_owner(
229
+ self, datasource_name: str = None, owner: str = None
230
+ ):
231
+ expect(self.datasource_name).to_be_visible()
232
+ if datasource_name:
233
+ expect(self.datasource_name).to_have_text(datasource_name)
234
+ expect(self.owner_text).to_be_visible()
235
+ if owner:
236
+ expect(self.owner_text).to_have_text(f"by {owner}")
237
+ return self
238
+
239
+ @step
240
+ def should_see_overview(
241
+ self, project: str = None, ds_type: str = None, ds_id: str = None
242
+ ):
243
+ expect(self.overview_label).to_be_visible()
244
+ expect(self.project_value).to_be_visible()
245
+ if project:
246
+ expect(self.project_value).to_have_text(project)
247
+ expect(self.datasource_type_value).to_be_visible()
248
+ if ds_type:
249
+ expect(self.datasource_type_value).to_have_text(ds_type)
250
+ expect(self.datasource_id_field).to_be_visible()
251
+ if ds_id:
252
+ expect(self.datasource_id_field).to_have_value(ds_id)
253
+ return self
254
+
255
+ @step
256
+ def should_see_description(self, description: str = None):
257
+ expect(self.description_label).to_be_visible()
258
+ expect(self.description_text).to_be_visible()
259
+ if description:
260
+ expect(self.description_text).to_have_text(description)
261
+ return self
262
+
263
+ @step
264
+ def should_see_configuration(
265
+ self, embeddings_model: str = None, summarization_model: str = None
266
+ ):
267
+ expect(self.configuration_label).to_be_visible()
268
+ expect(self.embeddings_model_label).to_be_visible()
269
+ expect(self.embeddings_model_value).to_be_visible()
270
+ if embeddings_model:
271
+ expect(self.embeddings_model_value).to_have_text(embeddings_model)
272
+ expect(self.summarization_model_label).to_be_visible()
273
+ expect(self.summarization_model_value).to_be_visible()
274
+ if summarization_model:
275
+ expect(self.summarization_model_value).to_have_text(summarization_model)
276
+ return self
277
+
278
+ @step
279
+ def should_see_usage_details(self):
280
+ expect(self.usage_label).to_be_visible()
281
+ expect(self.input_tokens_label).to_be_visible()
282
+ expect(self.input_tokens_value).to_be_visible()
283
+ expect(self.output_tokens_label).to_be_visible()
284
+ expect(self.output_tokens_value).to_be_visible()
285
+ expect(self.money_spent_label).to_be_visible()
286
+ expect(self.money_spent_value).to_be_visible()
287
+ return self
288
+
289
+ @step
290
+ def should_see_processing_summary(
291
+ self,
292
+ total_documents: str = None,
293
+ processed_documents: str = None,
294
+ imported_chunks: str = None,
295
+ skipped_documents: str = None,
296
+ is_git: bool = False,
297
+ ):
298
+ expect(self.processing_summary_label).to_be_visible()
299
+ expect(self.total_documents_label).to_be_visible()
300
+ expect(self.total_documents_count).to_be_visible()
301
+ if total_documents:
302
+ expect(self.total_documents_count).to_have_text(total_documents)
303
+ expect(self.processed_documents_label).to_be_visible()
304
+ expect(self.processed_documents_count).to_be_visible()
305
+ if processed_documents:
306
+ expect(self.processed_documents_count).to_have_text(processed_documents)
307
+ expect(self.imported_chunks_label).to_be_visible()
308
+ expect(self.imported_chunks_count).to_be_visible()
309
+ if imported_chunks:
310
+ expect(self.imported_chunks_count).to_have_text(imported_chunks)
311
+ expect(self.skipped_documents_label).to_be_visible()
312
+ expect(self.skipped_documents_count).to_be_visible()
313
+ if skipped_documents:
314
+ expect(self.skipped_documents_count).to_have_text(skipped_documents)
315
+ if is_git:
316
+ expect(self.total_size_kb_label).to_be_visible()
317
+ expect(self.total_documents_count).to_be_visible()
318
+ expect(self.average_file_size_b_label).to_be_visible()
319
+ expect(self.average_file_size_b_count).to_be_visible()
320
+ return self
321
+
322
+ @step
323
+ def should_open_and_see_processed_data(self, min_count: int = 1):
324
+ expect(self.processed_data_tab_label).to_be_visible()
325
+ self.processed_data_tab_label.click()
326
+ expect(self.processed_data_list.first).to_be_visible()
327
+ count = self.processed_data_list.count()
328
+ assert_that(count, greater_than_or_equal_to(min_count))
329
+ return self
330
+
331
+ @step
332
+ def should_see_processed_data(self, min_count: int = 1):
333
+ expect(self.processed_data_label).to_be_visible()
334
+ expect(self.processed_data_list.first).to_be_visible()
335
+ count = self.processed_data_list.count()
336
+ assert_that(count, greater_than_or_equal_to(min_count))
337
+ return self
@@ -1,6 +1,5 @@
1
1
  import time
2
2
  from time import sleep
3
- from typing import List, Union, Tuple
4
3
 
5
4
  from codemie_test_harness.tests.utils.credentials_manager import CredentialsManager
6
5
 
@@ -144,32 +143,28 @@ class DataSourceUtils(BaseUtils):
144
143
 
145
144
  return self.wait_for_indexing(datasource_id)
146
145
 
147
- def create_file_datasource(
148
- self,
149
- name: str,
150
- description: str,
151
- files: List[Union[str, Tuple[str, bytes, str]]],
152
- shared_with_project: bool = False,
153
- embeddings_model: str = None,
154
- ) -> DataSource:
146
+ def create_file_datasource(self, **kwargs):
147
+ datasource_name = kwargs.get("name", get_random_name())
148
+
155
149
  create_request_params = {
156
- "name": name,
150
+ "name": datasource_name,
157
151
  "project_name": PROJECT,
158
- "description": description,
159
- "shared_with_project": shared_with_project,
160
- "csv_separator": ";",
161
- "csv_start_row": 1,
162
- "csv_rows_per_document": 1000,
163
- "embeddings_model": embeddings_model,
152
+ "description": kwargs.get("description", get_random_name()),
153
+ "shared_with_project": kwargs.get("shared_with_project", False),
154
+ "embeddings_model": kwargs.get("embeddings_model"),
155
+ "csv_separator": kwargs.get("csv_separator", ";"),
156
+ "csv_start_row": kwargs.get("csv_start_row", 1),
157
+ "csv_rows_per_document": kwargs.get("csv_rows_per_document", 1000),
164
158
  }
159
+ files = kwargs.get("files")
165
160
 
166
161
  create_datasource_request = FileDataSourceRequest(**create_request_params)
167
162
 
168
163
  self.client.datasources.create_file_datasource(create_datasource_request, files)
169
164
 
170
165
  datasource = wait_for_entity(
171
- lambda: self.client.datasources.list(per_page=200, filters={"name": name}),
172
- entity_name=name,
166
+ lambda: self.client.datasources.list(per_page=200),
167
+ entity_name=datasource_name,
173
168
  )
174
169
 
175
170
  return self.wait_for_indexing(datasource.id)
@@ -13,8 +13,8 @@ from codemie_test_harness.tests.test_data.ado_wiki_tools_test_data import (
13
13
  from codemie_test_harness.tests.utils.credentials_manager import CredentialsManager
14
14
  from codemie_test_harness.tests.utils.constants import test_project_name
15
15
 
16
- ado_wiki_prompt = ado_wiki_get_test_data[0][2]
17
- ado_wiki_answer = ado_wiki_get_test_data[0][3]
16
+ ado_wiki_prompt = ado_wiki_get_test_data[1][2]
17
+ ado_wiki_answer = ado_wiki_get_test_data[1][3]
18
18
 
19
19
 
20
20
  @pytest.mark.workflow
@@ -48,6 +48,7 @@ def test_workflow_with_vcs_tools_direct(
48
48
 
49
49
 
50
50
  @pytest.mark.regression
51
+ @pytest.mark.direct_tool
51
52
  @pytest.mark.parametrize(
52
53
  "toolkit,tool_name,prompt,expected_response",
53
54
  vcs_tools_test_data,
@@ -82,6 +83,7 @@ def test_workflow_with_vcs_tools_with_hardcoded_args(
82
83
 
83
84
 
84
85
  @pytest.mark.regression
86
+ @pytest.mark.direct_tool
85
87
  @pytest.mark.parametrize(
86
88
  "toolkit,tool_name,prompt,expected_response",
87
89
  vcs_tools_test_data,
@@ -14,8 +14,8 @@ from codemie_test_harness.tests.utils.credentials_manager import CredentialsMana
14
14
  from codemie_test_harness.tests.utils.base_utils import get_random_name
15
15
  from codemie_test_harness.tests.utils.constants import test_project_name
16
16
 
17
- ado_wiki_prompt = ado_wiki_get_test_data[0][2]
18
- ado_wiki_answer = ado_wiki_get_test_data[0][3]
17
+ ado_wiki_prompt = ado_wiki_get_test_data[1][2]
18
+ ado_wiki_answer = ado_wiki_get_test_data[1][3]
19
19
 
20
20
 
21
21
  @pytest.mark.workflow
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: codemie-test-harness
3
- Version: 0.1.177
3
+ Version: 0.1.179
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.177)
16
+ Requires-Dist: codemie-sdk-python (==0.1.179)
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)
@@ -21,7 +21,7 @@ codemie_test_harness/tests/assistant/datasource/test_google_datasource.py,sha256
21
21
  codemie_test_harness/tests/assistant/datasource/test_jira_datasource.py,sha256=rU4CPdcpmTUFObAkvuDypao6hujIDdDECWTrFALueQM,3332
22
22
  codemie_test_harness/tests/assistant/default_integrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
23
  codemie_test_harness/tests/assistant/default_integrations/test_default_integrations_for_tool.py,sha256=FUi0r1TTG5Hh4pVQosNtSmBRNJhKN_sSfavHjAm51KQ,7554
24
- codemie_test_harness/tests/assistant/default_integrations/test_default_integrations_for_tool_kit.py,sha256=l2wwk9TKDfSuGKGAJVhhwkVhL1cn74wOxPr_gdbSZDQ,7825
24
+ codemie_test_harness/tests/assistant/default_integrations/test_default_integrations_for_tool_kit.py,sha256=RJWNBJqbaW-dO8JiiEaiSp6Q5kWze4wdYsEGmHYwtmc,7825
25
25
  codemie_test_harness/tests/assistant/default_integrations/test_default_integrations_for_tool_with_datasource.py,sha256=K8wzK48e7V92kLt_BKsXyO_K_ud0VTUHrnvFFoIxGj8,10140
26
26
  codemie_test_harness/tests/assistant/test_assistants.py,sha256=pXif1RLZ6Zbog9ovoKptX6tzLtGlNaMdZ5m_3BnvrV8,15371
27
27
  codemie_test_harness/tests/assistant/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -44,7 +44,6 @@ codemie_test_harness/tests/assistant/tools/git/test_assistant_with_git_tools.py,
44
44
  codemie_test_harness/tests/assistant/tools/mcp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
45
45
  codemie_test_harness/tests/assistant/tools/mcp/test_cli_mcp_server.py,sha256=nf8j8d5L9hXriqzh1o1b1IUclEW5jY-s1YHKovnWMh0,2642
46
46
  codemie_test_harness/tests/assistant/tools/mcp/test_mcp_servers.py,sha256=6G07SddfjZ0ilnJVSeS3yK-OSge9224I-6BQhbQxvZo,1386
47
- codemie_test_harness/tests/assistant/tools/mcp/test_single_assistant_dual_time_plugins.py,sha256=IWQVvRSIDFbNahnmwVdrGxSjgbNfpj-jLV6uqrDj-Yo,5107
48
47
  codemie_test_harness/tests/assistant/tools/notification/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
48
  codemie_test_harness/tests/assistant/tools/notification/test_assistant_notification_tools.py,sha256=0HrrCwwwU0U_2qrJPeURmqetOGt2FuBLoCxLEHzXV1k,2651
50
49
  codemie_test_harness/tests/assistant/tools/openapi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -52,6 +51,7 @@ codemie_test_harness/tests/assistant/tools/openapi/test_assistant_with_open_api_
52
51
  codemie_test_harness/tests/assistant/tools/plugin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
52
  codemie_test_harness/tests/assistant/tools/plugin/test_assistant_with_development_plugin.py,sha256=9oYARpnIgSsdhgI2S0wUHWhgddvqBzDL6CH219tVNHM,2660
54
53
  codemie_test_harness/tests/assistant/tools/plugin/test_assistant_with_plugin_and_mcp_servers.py,sha256=WWs-g00i6Ypec9G4wNBNVNQAMZBojb_U7s-uGo4dmlI,1850
54
+ codemie_test_harness/tests/assistant/tools/plugin/test_single_assistant_dual_time_plugins.py,sha256=IWQVvRSIDFbNahnmwVdrGxSjgbNfpj-jLV6uqrDj-Yo,5107
55
55
  codemie_test_harness/tests/assistant/tools/project_management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
56
  codemie_test_harness/tests/assistant/tools/project_management/test_assistant_pm_tools.py,sha256=DgREta2yvCFJk4QPv1EkScAR3pjdU-feJose6IKXnBA,5277
57
57
  codemie_test_harness/tests/assistant/tools/report_portal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -102,7 +102,7 @@ codemie_test_harness/tests/service/test_workflow_service.py,sha256=QyxtorhaCI1oE
102
102
  codemie_test_harness/tests/test_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
103
103
  codemie_test_harness/tests/test_data/ado_test_plan_tools_test_data.py,sha256=Al5u4HNfrcoj-b072uEGsqUqjKqwXLGJXKQ0QeJT3PI,5778
104
104
  codemie_test_harness/tests/test_data/ado_wiki_tools_test_data.py,sha256=xvgEja5vE0l41sP4fE0stdFLQ0M201FWynOCEcRYufE,3188
105
- codemie_test_harness/tests/test_data/ado_work_item_tools_test_data.py,sha256=MHou6QGjufyX5t1oexnq2Y4UCjlE17eeyMuIz6Ml62s,5693
105
+ codemie_test_harness/tests/test_data/ado_work_item_tools_test_data.py,sha256=4Y195fG7K7FfjXXapEuTmAEz7YkBgkuO2YCQKu5YC8k,5693
106
106
  codemie_test_harness/tests/test_data/assistant_test_data.py,sha256=yFyctUA5-3DYXNeRVxZUa3wVQH77e2M3quZXKQo0Gt0,46675
107
107
  codemie_test_harness/tests/test_data/cloud_tools_test_data.py,sha256=SWz-VTNcWteCvVupl2xksv4eEFkmtWMdRIqrZxjpFYk,6200
108
108
  codemie_test_harness/tests/test_data/codebase_tools_test_data.py,sha256=xbnIlDbiZTibGekrodmhO7bOg7kilsoKSlfHAhcmyIQ,3312
@@ -146,7 +146,7 @@ codemie_test_harness/tests/test_data/files/test.yaml,sha256=3NDQyzwkRM5d6eCYMScN
146
146
  codemie_test_harness/tests/test_data/files/test_extended.docx,sha256=8TqjOxgO6ODY82DAayEqFm8D8yV6haoaKSzP-0Z5gl8,112227
147
147
  codemie_test_harness/tests/test_data/files/test_extended.xlsx,sha256=_ZjBj1E_uEuWHWGO5x0BO0E3-kQWqSyWi9vG9n2JZpQ,10031
148
148
  codemie_test_harness/tests/test_data/git_tools_test_data.py,sha256=7U05vLqkh5uJ0l_KJeHis549id1Of99K0jCsWOb0nXM,8485
149
- codemie_test_harness/tests/test_data/google_datasource_test_data.py,sha256=fhMJVTU0udINKtBQ750c_c279NzibGiZumnIaCPLtBo,511
149
+ codemie_test_harness/tests/test_data/google_datasource_test_data.py,sha256=9hO8KnOcb3to4bxsPj3nwIswjfobn6_aYJ6IDMAmXBc,628
150
150
  codemie_test_harness/tests/test_data/index_test_data.py,sha256=VZJC_Fmko32EHaybUwCy0mWMiwAeUAAmhRa0Xt4oTHQ,1115
151
151
  codemie_test_harness/tests/test_data/integrations_test_data.py,sha256=1YecCRnrBq5NiM9HEnyKFZ17nuFEnZUlNzKcwo09SDM,13050
152
152
  codemie_test_harness/tests/test_data/keycloak_tool_test_data.py,sha256=uF8YqHGgLpQVxKdpKXLe-7F-ipEGQiHHh28nZvvVGM8,1244
@@ -197,28 +197,40 @@ codemie_test_harness/tests/test_data/workflow_validation_messages.py,sha256=zg5B
197
197
  codemie_test_harness/tests/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
198
198
  codemie_test_harness/tests/ui/_test_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
199
199
  codemie_test_harness/tests/ui/_test_data/assistant_test_data.py,sha256=DRfungbLNwbFQf6qTNOVjR3l2v7fBDzgUq1v9fwXw78,6829
200
+ codemie_test_harness/tests/ui/_test_data/datasource_test_data.py,sha256=Ubx8o1NPxiJ2adaz6IDpwXDKB9_yE40v5_0az__CX0I,3489
200
201
  codemie_test_harness/tests/ui/_test_data/integration_test_data.py,sha256=6YnDIWhOSTSmzIziBCfpqYikVT0kXw_vMrMJBmhnSnQ,4212
201
202
  codemie_test_harness/tests/ui/assistants/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
202
203
  codemie_test_harness/tests/ui/assistants/test_create_assistant.py,sha256=YWhz5--YgXBi10K8jPuhG9G2cK5GY9_xAnxDdN6-NJ8,14560
203
204
  codemie_test_harness/tests/ui/conftest.py,sha256=KBM3g-lxPQEtbNh6i-1bAYYRlVycbEXg7ztn3x7VobI,4361
205
+ codemie_test_harness/tests/ui/datasource/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
206
+ codemie_test_harness/tests/ui/datasource/test_create_datasource.py,sha256=OlYVPg0WwyjJno1dEFNFCF7kSbisuRdA6c1s9a8Nu54,6446
207
+ codemie_test_harness/tests/ui/datasource/test_datasource_page.py,sha256=-q37Ft2vGP0b-1b4aASpKlqCfTb09vcfmeLBU8FojDE,2335
208
+ codemie_test_harness/tests/ui/datasource/test_edit_datasource.py,sha256=hy9bifVmrb-AFz9JH9WxEF6yv7_CJzgL2UoiswPYLfs,6439
209
+ codemie_test_harness/tests/ui/datasource/test_view_datasource.py,sha256=aaNYyYJe1scp55hlDwrD13z5TB4e3nKxIfedoDKWqDI,7786
204
210
  codemie_test_harness/tests/ui/integrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
205
211
  codemie_test_harness/tests/ui/integrations/test_create_integration.py,sha256=ASe1i7Zv3x7RynVkT5rQz79z4lsah6MEPfew6aoTsy0,11962
206
212
  codemie_test_harness/tests/ui/pageobject/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
207
213
  codemie_test_harness/tests/ui/pageobject/assistants/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
208
- codemie_test_harness/tests/ui/pageobject/assistants/assistants_page.py,sha256=pYUhVRGZhCVX5EILCTkqjvOBPfD9u2qc5Rsa54up5IA,6036
214
+ codemie_test_harness/tests/ui/pageobject/assistants/assistants_page.py,sha256=E3aEXpmMhjcmJsO_nE52WdbHXOoK-Hp9vqIw4rEPzrU,6043
209
215
  codemie_test_harness/tests/ui/pageobject/assistants/create_assistant_page.py,sha256=xGl5nZAwJJtZ_ej2ycYgywK9EBGj_-AXCW4Z_eEWgYA,21791
210
216
  codemie_test_harness/tests/ui/pageobject/assistants/generate_with_ai_modal.py,sha256=rsavzWxmawKzI4wHxixp49IN6m_ZUZNFTJTSnE8jBr8,13732
211
- codemie_test_harness/tests/ui/pageobject/base_page.py,sha256=pKi_Qv81W5XESdX-xFA3de98gyM4iJB1rkXNPyFnFx8,7960
217
+ codemie_test_harness/tests/ui/pageobject/base_page.py,sha256=UJhY9WkCn_GaXvdMXL1oFcmpZkfokz8rnOWYMqdTCF0,8732
212
218
  codemie_test_harness/tests/ui/pageobject/components/__init__.py,sha256=6scUFCL2StHbKIoNgGGZdpeDZUwbCrKIH7hwaskAB4E,577
213
219
  codemie_test_harness/tests/ui/pageobject/components/execution_history_row.py,sha256=aGHc5AOpGR0tlfmLQfk8272TN6TWiuiXHUcg6PtB1Iw,6499
214
220
  codemie_test_harness/tests/ui/pageobject/components/integration_row.py,sha256=TCS6Si1Di6nrU9TTstcc4bxPztIqaWo11JxFzdqPX_c,8492
215
221
  codemie_test_harness/tests/ui/pageobject/components/menu.py,sha256=llTWAbJHldo1-wY86k_2Dvs8iSEmMWzrw26AhQJ1kis,10501
216
222
  codemie_test_harness/tests/ui/pageobject/components/pop_up.py,sha256=DfdQfLZp_We8K9rNyLXtJqy3vk8BxEnp32h9dTThJUM,3466
223
+ codemie_test_harness/tests/ui/pageobject/components/project_selector.py,sha256=lOXjb9mCUIshon_cUAvt63eCZ43MAft7AWtbZXgVJRA,3543
217
224
  codemie_test_harness/tests/ui/pageobject/components/workflow_card.py,sha256=8M4JKYCI46_-0EosFBgWfFuD3-_AH8jVIhSRJCQqamQ,6712
218
225
  codemie_test_harness/tests/ui/pageobject/components/workflow_execution_history_item.py,sha256=wSl4ELoEAmlgrh-NiGNfAfFZtnDvenszir7ZoIcmgt0,7884
219
226
  codemie_test_harness/tests/ui/pageobject/components/workflow_execution_state.py,sha256=IWir8fP-7oc9t17Rjs6mHCNCxfQfmdfbFY2SsNxZaE4,13837
220
- codemie_test_harness/tests/ui/pageobject/components/workflow_sidebar.py,sha256=9rGoopJShDtASejDA1L8yL6TfRvGHD_5yNXtDKcKzoQ,17158
227
+ codemie_test_harness/tests/ui/pageobject/components/workflow_sidebar.py,sha256=vd7IW7PC7cmvib-bnp6XwIUseEwWoX_Y3Qo_UVkYR5A,17167
221
228
  codemie_test_harness/tests/ui/pageobject/components/workflow_state_card.py,sha256=V7V1p3FNPrwVFM0CjZeg0MUkW9bGoF8UP5DuuH-r4gU,11548
229
+ codemie_test_harness/tests/ui/pageobject/datasources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
230
+ codemie_test_harness/tests/ui/pageobject/datasources/create_edit_datasource_page.py,sha256=a8QTRRgVJ_Iyk4c-G1bZV4PrP24EtTtXX6KaCQE7jzQ,23866
231
+ codemie_test_harness/tests/ui/pageobject/datasources/datasource_page.py,sha256=UZDAkZ0SvWSGztPl9Jm5UtWm_-CRPFjtwWEkx0zXQN0,7847
232
+ codemie_test_harness/tests/ui/pageobject/datasources/datasource_sidebar.py,sha256=qpXux9oWDMlRM0vccLT_Yr5YZDPoaNm7rvFhQEjBWh8,9686
233
+ codemie_test_harness/tests/ui/pageobject/datasources/view_datasource_page.py,sha256=NgFpShy3lOJR-TuwiVeoU17Sxq0Lrv0eb7a9h8ILUQs,11302
222
234
  codemie_test_harness/tests/ui/pageobject/integrations/create_integration_page.py,sha256=3-iI3WntzJRxkdjw6HwQkaz3TI3pAWWRkfJvBcb6klk,24911
223
235
  codemie_test_harness/tests/ui/pageobject/integrations/integrations_page.py,sha256=Dsik34qzL8uK2KyIlKU--OFm61WyAWZTPBD__nwsBTM,13658
224
236
  codemie_test_harness/tests/ui/pageobject/login_page.py,sha256=cs0nYtvYykXfli9vYKWPpIWOEQbksUDUGgq03hulfSg,3062
@@ -231,7 +243,6 @@ codemie_test_harness/tests/ui/pageobject/workflows/workflow_executions_page.py,s
231
243
  codemie_test_harness/tests/ui/pageobject/workflows/workflow_template_details.py,sha256=6Su0yLA8wDybCPVE2WFhV6l6r_38aYaRY0mEYnLHlYg,3556
232
244
  codemie_test_harness/tests/ui/pageobject/workflows/workflow_templates_page.py,sha256=J5jxdZ2aQ9k15ghyRKYACxX2F9NiR6dXYBw0EaYlaN0,2645
233
245
  codemie_test_harness/tests/ui/pageobject/workflows/workflows_page.py,sha256=yqdaSTA4aUeD-8A9Or0OgJZhMr2tDvDWWP_f4uPL5dw,11186
234
- codemie_test_harness/tests/ui/pytest.ini,sha256=5LM3ib1yTB4jUHrC8Ksas_k8Li6RBuuUTAWCPRx-4MY,554
235
246
  codemie_test_harness/tests/ui/workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
236
247
  codemie_test_harness/tests/ui/workflows/test_create_workflow.py,sha256=zX_6-pcYGCLiU6FUAvP-uo3jXy0PEEPBc_eqbP0FLV0,10522
237
248
  codemie_test_harness/tests/ui/workflows/test_edit_workflow.py,sha256=RQIV5fSd3xv3tdGidpF8mMwkoHJ57Xn1HzeXnFq4eB0,12913
@@ -247,7 +258,7 @@ codemie_test_harness/tests/utils/client_factory.py,sha256=xGta0ZaVYzWfwJ4cu3f89K
247
258
  codemie_test_harness/tests/utils/constants.py,sha256=ZNyM5wERHFN-c8TCvBcxCdFf0As9TOpr22YvLCMHArE,1116
248
259
  codemie_test_harness/tests/utils/conversation_utils.py,sha256=SWj6TBWOQoX5Yh6Wk63yHQFveRXgK1mpLb3PUKAa57A,648
249
260
  codemie_test_harness/tests/utils/credentials_manager.py,sha256=sqzJUekCwo56zvOOm4BdHvyHPPzvY9aI4nWp1GoLwCQ,52866
250
- codemie_test_harness/tests/utils/datasource_utils.py,sha256=_jx1IrRR5rmQxXsal5z4nwX9vgupdVdgNL0vH-2nJ8A,12685
261
+ codemie_test_harness/tests/utils/datasource_utils.py,sha256=7I37BBD-ySvH9u-y9wjposohqXZG8ksx2CGvbsHK3WY,12707
251
262
  codemie_test_harness/tests/utils/env_resolver.py,sha256=25776Aq9oIDcDzGtfFs07lj7eldeFgmsocxeS3RUclE,4280
252
263
  codemie_test_harness/tests/utils/env_utils.py,sha256=9tyVgxKfYqdtSoo9dRTScOZWjAUm82_65JjaKggcwCg,3999
253
264
  codemie_test_harness/tests/utils/file_utils.py,sha256=hY-kwnyzvtd1BQif8r5NhvRTGfpKLmQKyRsq1Tuflhg,585
@@ -281,7 +292,7 @@ codemie_test_harness/tests/workflow/assistant_tools/data_management/__init__.py,
281
292
  codemie_test_harness/tests/workflow/assistant_tools/data_management/test_workflow_with_assistant_with_data_management_tools.py,sha256=lGp37Xa6CtAA42_rmHilRDNDlwZDNmHQAf8geeJ1Kew,2991
282
293
  codemie_test_harness/tests/workflow/assistant_tools/default_integrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
283
294
  codemie_test_harness/tests/workflow/assistant_tools/default_integrations/test_default_integrations_for_tool.py,sha256=cFHUaIAZodOQpV8QNdFiZ6MoBHDXoAls_3ioCGEcgNI,8770
284
- codemie_test_harness/tests/workflow/assistant_tools/default_integrations/test_default_integrations_for_tool_kit.py,sha256=4tIS7ZxU1UWvg67YHqp7aP7fiRCbaSXEriIfJqibN8o,9036
295
+ codemie_test_harness/tests/workflow/assistant_tools/default_integrations/test_default_integrations_for_tool_kit.py,sha256=TpZk_ggW0nc1YbNqTDBpQxV3gXK5C1SYSUIZ3ZF70rY,9036
285
296
  codemie_test_harness/tests/workflow/assistant_tools/default_integrations/test_default_integrations_for_tool_with_datasource.py,sha256=3nOYdnGWyexDGFQjc1KBUpYnU0Mroi_4Gljpx4DPXy8,11445
286
297
  codemie_test_harness/tests/workflow/assistant_tools/file_management/__init__.py,sha256=gdro-sbQYZMXgou3dzJw2sqqdS8o7_N41ej5qCA-3v0,53
287
298
  codemie_test_harness/tests/workflow/assistant_tools/file_management/test_workflow_with_assistant_with_file_management_tools.py,sha256=8UyQhuusXD4PWPzV-3By6WdP8U12opbYXWwYga0gRc0,5613
@@ -328,7 +339,7 @@ codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_proj
328
339
  codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_report_portal_tools.py,sha256=RRlVdUgq6M7aF7Ce2o7iPqhWpqUbZMI7IDrddjnJ1-w,3141
329
340
  codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_research_tools.py,sha256=s0rV9EPgXhaJ8T7f4vKyLsnynGHWzFLCQJaXKSZ0p-E,2579
330
341
  codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_servicenow_tools.py,sha256=FBc5LzzipL7TU3li-tT7NdE4CpJRv1D895Txf6PzAZE,2398
331
- codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_vcs_tools.py,sha256=0XAvKVxfaeC3w3tZBwIOOw__d0ssm3MVFQtJCbDIzi4,3069
342
+ codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_vcs_tools.py,sha256=HrOSsL-6rnEFV54230Azlu6IZFYjO5s6aGlwm2EbD5w,3119
332
343
  codemie_test_harness/tests/workflow/test_workflows.py,sha256=IMsaL_QH5DexIldHIEg2duyLrIZQ_0B4pO32slcMm9E,1163
333
344
  codemie_test_harness/tests/workflow/virtual_assistant_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
334
345
  codemie_test_harness/tests/workflow/virtual_assistant_tools/access_management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -345,7 +356,7 @@ codemie_test_harness/tests/workflow/virtual_assistant_tools/data_management/__in
345
356
  codemie_test_harness/tests/workflow/virtual_assistant_tools/data_management/test_workflow_with_data_management_tools.py,sha256=3MqMwyltXcSUBF8emY7G3o8sQWbcncbpuoR7CtIPum0,3265
346
357
  codemie_test_harness/tests/workflow/virtual_assistant_tools/default_integrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
347
358
  codemie_test_harness/tests/workflow/virtual_assistant_tools/default_integrations/test_default_integrations_for_tool.py,sha256=fmT5EMRWfce1XXDRCFVdAthkXeKwMiPcpb4PMqH0r3s,8673
348
- codemie_test_harness/tests/workflow/virtual_assistant_tools/default_integrations/test_default_integrations_for_tool_kit.py,sha256=LFYubYUtTmRT044HAt6riteoQR9O2Wql22NFzAMHJQY,8959
359
+ codemie_test_harness/tests/workflow/virtual_assistant_tools/default_integrations/test_default_integrations_for_tool_kit.py,sha256=cfyRBkFy3szTe3ErHG8vB2sVXI67-aJmWcxDRL9T5BI,8959
349
360
  codemie_test_harness/tests/workflow/virtual_assistant_tools/default_integrations/test_default_integrations_for_tool_with_datasource.py,sha256=0Xu114Z0MuCVQlNFwDatMP40txD-uzljDv2wvYxbBOQ,11427
350
361
  codemie_test_harness/tests/workflow/virtual_assistant_tools/file_management/__init__.py,sha256=gdro-sbQYZMXgou3dzJw2sqqdS8o7_N41ej5qCA-3v0,53
351
362
  codemie_test_harness/tests/workflow/virtual_assistant_tools/file_management/test_workflow_with_file_management_tools.py,sha256=H7v4StKR_8AN-NqLF5mLVhO9UCk82JYLC3IJECesuuU,6688
@@ -370,7 +381,7 @@ codemie_test_harness/tests/workflow/virtual_assistant_tools/servicenow/__init__.
370
381
  codemie_test_harness/tests/workflow/virtual_assistant_tools/servicenow/test_workflow_with_servicenow_tools.py,sha256=vq6tucNBxiNIQSmIj_pYiiPm0lipU9X3kzeCd6xEbRM,966
371
382
  codemie_test_harness/tests/workflow/virtual_assistant_tools/vcs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
372
383
  codemie_test_harness/tests/workflow/virtual_assistant_tools/vcs/test_workflow_with_vcs_tools.py,sha256=uD2qs361j6Egp4UumfoQ4gC24-NioXfiW0IF53N9hVA,1175
373
- codemie_test_harness-0.1.177.dist-info/METADATA,sha256=Y5ve191zYM3OuCm3uEjdhOPYvHCtFk59M_EHUXUW8VQ,18310
374
- codemie_test_harness-0.1.177.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
375
- codemie_test_harness-0.1.177.dist-info/entry_points.txt,sha256=n98t-EOM5M1mnMl_j2X4siyeO9zr0WD9a5LF7JyElIM,73
376
- codemie_test_harness-0.1.177.dist-info/RECORD,,
384
+ codemie_test_harness-0.1.179.dist-info/METADATA,sha256=B8tSZXImqnuSXHiemV2TYOutBQ79qC0E81Nf-jmCq9k,18310
385
+ codemie_test_harness-0.1.179.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
386
+ codemie_test_harness-0.1.179.dist-info/entry_points.txt,sha256=n98t-EOM5M1mnMl_j2X4siyeO9zr0WD9a5LF7JyElIM,73
387
+ codemie_test_harness-0.1.179.dist-info/RECORD,,
@@ -1,18 +0,0 @@
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_*