codemie-test-harness 0.1.197__py3-none-any.whl → 0.1.198__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.

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: codemie-test-harness
3
- Version: 0.1.197
3
+ Version: 0.1.198
4
4
  Summary: Autotest for CodeMie backend and UI
5
5
  Author: Anton Yeromin
6
6
  Author-email: anton_yeromin@epam.com
@@ -13,12 +13,13 @@ 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.197)
16
+ Requires-Dist: codemie-sdk-python (==0.1.198)
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-repeat (>=0.9.3,<0.10.0)
20
20
  Requires-Dist: pytest-reportportal (>=5.5.2,<6.0.0)
21
21
  Requires-Dist: pytest-rerunfailures (>=15.1,<16.0)
22
+ Requires-Dist: pytest-timeout (>=2.4.0,<3.0.0)
22
23
  Requires-Dist: pytest-xdist (>=3.6.1,<4.0.0)
23
24
  Requires-Dist: python-dotenv (>=1.1.0,<2.0.0)
24
25
  Requires-Dist: python-gitlab (>=5.6.0,<6.0.0)
@@ -319,6 +320,56 @@ codemie-test-harness run --marks excel_generation --count 100 -n 20 # Overrides
319
320
 
320
321
  **Note:** The `--count` parameter requires the `pytest-repeat` plugin, which is included in the dependencies.
321
322
 
323
+ #### Test Timeout Control
324
+
325
+ Control per-test timeout to prevent tests from running indefinitely. Tests exceeding the timeout will be **automatically terminated and marked as FAILED**.
326
+
327
+ **Configuration Priority**: CLI args → Environment variable → Config file → Default (300 seconds)
328
+
329
+ **Usage Examples:**
330
+
331
+ ```shell
332
+ # Via CLI argument (600 seconds = 10 minutes)
333
+ codemie-test-harness run --timeout 600 --marks smoke
334
+
335
+ # Via config file (persistent)
336
+ codemie-test-harness config set TEST_TIMEOUT 900
337
+ codemie-test-harness run --marks api
338
+
339
+ # Via environment variable
340
+ export TEST_TIMEOUT=300
341
+ codemie-test-harness run --marks smoke
342
+
343
+ # Disable timeout for debugging (use 0)
344
+ codemie-test-harness run --timeout 0 --marks smoke
345
+
346
+ # Override config default for specific run
347
+ codemie-test-harness config set TEST_TIMEOUT 600
348
+ codemie-test-harness run --timeout 1200 --marks slow # Uses 1200, not 600
349
+ ```
350
+
351
+ **Default**: 300 seconds (5 minutes) per test
352
+
353
+ **What Happens on Timeout?**
354
+
355
+ When a test exceeds the configured timeout:
356
+ 1. ✅ **Test is automatically terminated** - Execution stops immediately
357
+ 2. ✅ **Marked as FAILED** - Test result shows as failed with clear timeout message
358
+ 3. ✅ **Error details displayed** - Shows which test timed out and the configured limit
359
+ 4. ✅ **Remaining tests continue** - Other tests proceed normally
360
+ 5. ✅ **Stack trace captured** - Shows where the test was when timeout occurred
361
+
362
+ **Example timeout error output:**
363
+ ```
364
+ FAILED tests/test_slow_operation.py::test_data_processing - Failed: Timeout >300.0s
365
+ ```
366
+
367
+ **Notes:**
368
+ - Timeout applies to **individual test functions**, not the entire test run
369
+ - Useful for preventing hanging tests in CI/CD pipelines
370
+ - Consider increasing timeout for legitimate long-running operations (data processing, large file operations)
371
+ - Timeout of 0 disables the timeout (use for debugging only)
372
+
322
373
  #### Assistant Chat Interface
323
374
 
324
375
  Interact directly with CodeMie assistants through the CLI:
@@ -547,6 +598,51 @@ pytest -n 20 --count 100 -m smoke --reruns 2 # Heavy load with retries
547
598
  - `--reruns 2` uses pytest-rerunfailures to improve resiliency in flaky environments
548
599
  - `--count N` uses pytest-repeat to run each test N times (useful for performance/load testing)
549
600
 
601
+ #### Test Timeout Configuration
602
+
603
+ Tests have a configurable timeout to prevent hanging. Default is **300 seconds (5 minutes)** per test.
604
+
605
+ **Configure in .env file:**
606
+ ```properties
607
+ TEST_TIMEOUT=600 # 10 minutes
608
+ ```
609
+
610
+ **Override via pytest CLI:**
611
+ ```shell
612
+ # Set timeout for this run
613
+ pytest -n 10 -m smoke --timeout 900 # 15 minutes
614
+
615
+ # Disable timeout (debugging)
616
+ pytest -m slow_tests --timeout 0
617
+
618
+ # Use default from .env or pytest.ini
619
+ pytest -n 10 -m api # Uses TEST_TIMEOUT from .env or 300s default
620
+ ```
621
+
622
+ **Timeout Behavior:**
623
+
624
+ When a test exceeds the configured timeout:
625
+ - Test execution is **terminated immediately**
626
+ - Test is marked as **FAILED** with a timeout error message
627
+ - Stack trace shows where the test was when timeout occurred
628
+ - Remaining tests continue execution normally
629
+
630
+ **Example timeout failure:**
631
+ ```
632
+ ================================== FAILURES ===================================
633
+ _________________ test_slow_workflow_execution ________________
634
+
635
+ E Failed: Timeout >300.0s
636
+
637
+ tests/workflow/test_workflows.py:145: Failed
638
+ ```
639
+
640
+ **Best Practices:**
641
+ - Keep default timeout reasonable (5-10 minutes for E2E tests)
642
+ - Increase timeout for specific slow tests using `@pytest.mark.timeout(900)`
643
+ - Use timeout=0 only for debugging hanging tests
644
+ - Consider if a test legitimately needs > 5 minutes (optimize if possible)
645
+
550
646
  ### UI tests (Playwright)
551
647
 
552
648
  Install browsers once:
@@ -1,18 +1,18 @@
1
1
  codemie_test_harness/.env,sha256=qwCZaT0wIqswimUpuny4SfHOG6FsLClAAtjddztA3GQ,177
2
2
  codemie_test_harness/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
3
  codemie_test_harness/cli/__init__.py,sha256=da1PTClDMl-IBkrSvq6JC1lnS-K_BASzCvxVhNxN5Ls,13
4
- codemie_test_harness/cli/cli.py,sha256=GN8_eWgRasp7jBm0PBl8mai_Rr706JfwUrcmaBIV8yM,4585
4
+ codemie_test_harness/cli/cli.py,sha256=5R9YSNEO_TxjYiHH2JsrEgb7utRmFfn8norhbvsZKBM,5053
5
5
  codemie_test_harness/cli/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
6
  codemie_test_harness/cli/commands/assistant_cmd.py,sha256=LuAWMFuZPYdP51dNcqjalur8CHobkSVlt49f97cgJEg,3076
7
- codemie_test_harness/cli/commands/config_cmd.py,sha256=fmeU3TYmjtbpsbfyEuOmjHDi502xAw4Pc5tWdSfeyVY,22477
7
+ codemie_test_harness/cli/commands/config_cmd.py,sha256=QDZSEXWoenkEvX55UaDm7rTlDTdBaWDTNtplXhoAAUQ,22477
8
8
  codemie_test_harness/cli/commands/marks_cmd.py,sha256=8mKGJNLkGBVZRw2DwCDUAyZOO2fKyfV18J60eaB5eCY,1392
9
- codemie_test_harness/cli/commands/run_cmd.py,sha256=zEpgGFbzfvaXstGAW8Wk4_ybD_IAu8hb5Glw2S-ZWLs,1426
9
+ codemie_test_harness/cli/commands/run_cmd.py,sha256=J6l1nrIQbr9iJ473TCB5KbEfOwkIaxS6bJFmngxmB4o,1760
10
10
  codemie_test_harness/cli/commands/workflow_cmd.py,sha256=QwT_6DAyjeWBZiamvGuBBi6JKh9Cu-wS756xClWmpzI,1784
11
- codemie_test_harness/cli/constants.py,sha256=ihFKdkGiXX0euexE-zu2ADW9WOfOUfqU5suI-HerE9s,12035
11
+ codemie_test_harness/cli/constants.py,sha256=9h49sgx4vBA5M1XmkBF5u3_Qhj2C144a1N5URsTq5sw,12486
12
12
  codemie_test_harness/cli/marks_utils.py,sha256=CGAIMWO7EqApYTl3qMxBkREjA3yOQOQGjqgbxQ6bL1s,11164
13
- codemie_test_harness/cli/runner.py,sha256=WuVmMy0g3WBK9yMtdNP1r-B8PBMYl1UVeHCZDCV8vSg,3801
13
+ codemie_test_harness/cli/runner.py,sha256=ZQNKwD98SWcSXOXeVtK39q-cdPWnFLwwUHPDua-4s5w,3954
14
14
  codemie_test_harness/cli/utils.py,sha256=1X7XPcYAgeH1BpwKo4sOk1VpYdxda15usi9U9_dv7BY,1557
15
- codemie_test_harness/pytest.ini,sha256=Tqi0sGis9Dwhg6Y0OEEx-S8aXRONezUUXsWt6fdjEnA,223
15
+ codemie_test_harness/pytest.ini,sha256=jLrm1U5u6_biXfYGeSepKmO8wf75LlDcHiEnAfEQtOI,286
16
16
  codemie_test_harness/tests/__init__.py,sha256=CX5mbH_1RzwetK14moYQ0KCoUBPQMGkI14Fg8tAUJ0A,782
17
17
  codemie_test_harness/tests/assistant/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
18
  codemie_test_harness/tests/assistant/datasource/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -64,7 +64,7 @@ codemie_test_harness/tests/assistant/tools/servicenow/__init__.py,sha256=47DEQpj
64
64
  codemie_test_harness/tests/assistant/tools/servicenow/test_servicenow_tools.py,sha256=aUjfZ4773WoQJjcHx3JqH5e8ckaKB-aIMO-OZWTm0Ek,888
65
65
  codemie_test_harness/tests/assistant/tools/vcs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
66
66
  codemie_test_harness/tests/assistant/tools/vcs/test_assistant_with_vcs_tools.py,sha256=c9cZXxMo0YFVJLWdYt23Awy2PqTnNxp0uLLCgk8k2iQ,1143
67
- codemie_test_harness/tests/conftest.py,sha256=FRKrytMTQVXy22lAHdhQUkXHjsKMCzYi6q-HnUL--yA,30287
67
+ codemie_test_harness/tests/conftest.py,sha256=30SuG3L8lzloDfGG0aYgNyR7pU5WkckSaTZUny2EraY,30909
68
68
  codemie_test_harness/tests/conversations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
69
69
  codemie_test_harness/tests/conversations/test_conversations_endpoints.py,sha256=HQ2nu9lXfRNkyJhA0rzar7Rmv6pMe-te0rFYAy-X5UA,4128
70
70
  codemie_test_harness/tests/e2e/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -79,12 +79,12 @@ codemie_test_harness/tests/integrations/project/__init__.py,sha256=47DEQpj8HBSa-
79
79
  codemie_test_harness/tests/integrations/project/test_default_integrations.py,sha256=DH8zhlLN0VX7sOb6eRyNmYhXcz1Fa8EaEoPNs0ql_-8,12855
80
80
  codemie_test_harness/tests/integrations/project/test_project_integrations.py,sha256=hrgd3DO_D2ck5b9DrTZP6i8dkCSOs6PycPppkiXJw6M,9009
81
81
  codemie_test_harness/tests/integrations/user/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
82
- codemie_test_harness/tests/integrations/user/test_default_integrations.py,sha256=-n18gR_xumCXyZTi5lXA6Ykj2sq61YxdNB4boAC09ow,11764
82
+ codemie_test_harness/tests/integrations/user/test_default_integrations.py,sha256=uXz0kDFNpEPqGObEzJ2xiWF9Wspo79bXbi1H87NTNDk,12807
83
83
  codemie_test_harness/tests/integrations/user/test_user_integrations.py,sha256=SOhRIP7JlH61LqYc37haWmeApqf0FDggl-K6W022pj4,8076
84
84
  codemie_test_harness/tests/llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
85
85
  codemie_test_harness/tests/llm/assistants/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
86
86
  codemie_test_harness/tests/llm/assistants/test_lite_llm.py,sha256=jYtf_J7lBSmB1LmmXWjGHkMWmpcqAJ3l_IJovgYxmZM,3683
87
- codemie_test_harness/tests/llm/assistants/test_llm.py,sha256=kAf6b0glG-n9ulWxbzAWy34n54L4rTQpcyUlInQvtKY,5369
87
+ codemie_test_harness/tests/llm/assistants/test_llm.py,sha256=b5HhrDkz1lwCaSZH5kdPdacmLXH_Bxnj5vO_A5ho3k8,4838
88
88
  codemie_test_harness/tests/providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
89
89
  codemie_test_harness/tests/providers/test_providers_endpoints.py,sha256=iV9pxFOxTPVbk8aH8RGFjVDUCUDMUiRWcDMrvwqoTqk,8043
90
90
  codemie_test_harness/tests/search/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
@@ -105,7 +105,7 @@ codemie_test_harness/tests/test_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeu
105
105
  codemie_test_harness/tests/test_data/ado_test_plan_tools_test_data.py,sha256=Al5u4HNfrcoj-b072uEGsqUqjKqwXLGJXKQ0QeJT3PI,5778
106
106
  codemie_test_harness/tests/test_data/ado_wiki_tools_test_data.py,sha256=xvgEja5vE0l41sP4fE0stdFLQ0M201FWynOCEcRYufE,3188
107
107
  codemie_test_harness/tests/test_data/ado_work_item_tools_test_data.py,sha256=4Y195fG7K7FfjXXapEuTmAEz7YkBgkuO2YCQKu5YC8k,5693
108
- codemie_test_harness/tests/test_data/assistant_test_data.py,sha256=kDWnfeddpfG3W3TJJGcBJQ2EmRvUROt6jDLDrQuxjFI,46528
108
+ codemie_test_harness/tests/test_data/assistant_test_data.py,sha256=jUsLVws5Zt23W2AxDU6oXvzMNzY_8h6mCjq_wuQn-Lk,45359
109
109
  codemie_test_harness/tests/test_data/cloud_tools_test_data.py,sha256=SWz-VTNcWteCvVupl2xksv4eEFkmtWMdRIqrZxjpFYk,6200
110
110
  codemie_test_harness/tests/test_data/codebase_tools_test_data.py,sha256=Y2vB2yxDli7Ebadsyt2O60Vj0gXiX7nYqyWZicHqjGQ,3505
111
111
  codemie_test_harness/tests/test_data/data_management_tools_test_data.py,sha256=K3_JBJaBW7BhgkjFSeFtqW4jcKhNOmz0EFOGeyfk4jQ,3455
@@ -391,7 +391,7 @@ codemie_test_harness/tests/workflow/virtual_assistant_tools/servicenow/__init__.
391
391
  codemie_test_harness/tests/workflow/virtual_assistant_tools/servicenow/test_workflow_with_servicenow_tools.py,sha256=D835gaRbCnB4va5mi9TdA_u9StSpGXQ_fgzwW0S2pwo,1173
392
392
  codemie_test_harness/tests/workflow/virtual_assistant_tools/vcs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
393
393
  codemie_test_harness/tests/workflow/virtual_assistant_tools/vcs/test_workflow_with_vcs_tools.py,sha256=Se9imIiBYuJU78m1pLu0g4ZmHygKZjr6JjIWkGXTy1Q,1364
394
- codemie_test_harness-0.1.197.dist-info/METADATA,sha256=FjezV2ePdgKhPGP25Ain8D1_dddHNuNCil9CYCYoNyQ,19739
395
- codemie_test_harness-0.1.197.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
396
- codemie_test_harness-0.1.197.dist-info/entry_points.txt,sha256=n98t-EOM5M1mnMl_j2X4siyeO9zr0WD9a5LF7JyElIM,73
397
- codemie_test_harness-0.1.197.dist-info/RECORD,,
394
+ codemie_test_harness-0.1.198.dist-info/METADATA,sha256=LR3ro0itvXBXJ3hyBKL9eUOmCMBQEsoK9EazPHwnfXk,22968
395
+ codemie_test_harness-0.1.198.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
396
+ codemie_test_harness-0.1.198.dist-info/entry_points.txt,sha256=n98t-EOM5M1mnMl_j2X4siyeO9zr0WD9a5LF7JyElIM,73
397
+ codemie_test_harness-0.1.198.dist-info/RECORD,,