Repository: stable-diffusion-webui
Issue: [Bug/Feature Request]: Make it possible to properly test code using the `--test-server` flag from extensions
Labels: enhancement

### Is there an existing issue for this?

- [X] I have searched the existing issues and checked the recent builds/commits

### What happened?

The controlnet extension uses the test support code from the webui for its automated test workflow. It seems that even though some tests clearly should have failed because an exception is raised during execution, the web API returns http code 200. AFAIK this is caused by these lines:

https://github.com/AUTOMATIC1111/stable-diffusion-webui/blob/baf6946e06249c5af9851c60171692c44ef633e0/modules/scripts.py#L452-L454

Which do not rethrow exceptions when they are caught.

I think a better behavior would be to rethrow any exception that was caught when the webui is ran with the `--test-server` cli argument.

### Steps to reproduce the problem

1. Create an alwayson script that always raises some exception in its `process()` method (i.e. `raise RuntimeError`)
2. Add a test that runs a generation with the above script active
3. Run the webui tests
4. Realize that all tests are still green


### What should have happened?

When running tests for an extension, exceptions that are raised from extension code should not be ignored.

### Commit where the problem happens

5ab7f213bec2f816f9c5644becb32eb72c8ffb89

### What Python version are you running on ?

Python 3.10.x

### What platforms do you use to access the UI ?

Other/Cloud

### What device are you running WebUI on?

CPU

### What browsers do you use to access the UI ?

_No response_

### Command Line Arguments

```Shell
--no-half --disable-opt-split-attention --use-cpu all --skip-torch-cuda-test --api --tests ./extensions/sd-webui-controlnet/tests
```


### List of extensions

sd-webui-controlnet

### Console logs

```Shell
# note: copy/pasted from latest controlnet workflow at https://github.com/Mikubill/sd-webui-controlnet/actions/runs/5367859433/jobs/9738330215#step:5:334

Launching Web UI in another process for testing with arguments: --no-half --disable-opt-split-attention --use-cpu all --skip-torch-cuda-test --api --tests ./extensions/sd-webui-controlnet/tests --ckpt /home/runner/work/sd-webui-controlnet/sd-webui-controlnet/stable-diffusion-webui/test/test_files/empty.pt --disable-nan-check --no-tests
Warning: caught exception 'Found no NVIDIA driver on your system. Please check that you have an NVIDIA GPU and installed a driver from http://www.nvidia.com/Download/index.aspx', memory monitor disabled
No module 'xformers'. Proceeding without it.
2023-06-25 04:50:40,401 - ControlNet - INFO - ControlNet v1.1.227
test_do_hijack__multiple_times__hijacks_once (cn_script.batch_hijack_test.TestBatchHijack) ... ok
test_do_hijack__registers_on_script_unloaded (cn_script.batch_hijack_test.TestBatchHijack) ... ok
test_get_cn_batches__1_batch (cn_script.batch_hijack_test.TestGetControlNetBatchesWorks) ... ok
test_get_cn_batches__1_simple (cn_script.batch_hijack_test.TestGetControlNetBatchesWorks) ... ok
test_get_cn_batches__2_batches (cn_script.batch_hijack_test.TestGetControlNetBatchesWorks) ... ok
test_get_cn_batches__2_mixed (cn_script.batch_hijack_test.TestGetControlNetBatchesWorks) ... ok
test_get_cn_batches__2_simples (cn_script.batch_hijack_test.TestGetControlNetBatchesWorks) ... ok
test_get_cn_batches__3_mixed (cn_script.batch_hijack_test.TestGetControlNetBatchesWorks) ... ok
test_get_cn_batches__empty (cn_script.batch_hijack_test.TestGetControlNetBatchesWorks) ... ok
ControlNet preprocessor location: /home/runner/work/sd-webui-controlnet/sd-webui-controlnet/stable-diffusion-webui/extensions/sd-webui-controlnet/annotator/downloads
controlnet batch mode
controlnet batch mode
controlnet batch mode
controlnet batch mode
controlnet batch mode
controlnet batch mode
2023-06-25 04:50:41,204 - ControlNet - WARNING - No ControlNetUnit detected in args. It is very likely that you are having an extension conflict.Here are args received by ControlNet: [].
test_process_images__1_batch_1_unit__runs_1_batch (cn_script.batch_hijack_test.TestProcessImagesPatchWorks) ... ok
test_process_images__1_batch_2_units__runs_1_batch (cn_script.batch_hijack_test.TestProcessImagesPatchWorks) ... ok
test_process_images__2_batches_1_unit__runs_2_batches (cn_script.batch_hijack_test.TestProcessImagesPatchWorks) ... ok
test_process_images__2_batches_2_units__runs_2_batches (cn_script.batch_hijack_test.TestProcessImagesPatchWorks) ... ok
test_process_images__3_batches_2_mixed_units__runs_3_batches (cn_script.batch_hijack_test.TestProcessImagesPatchWorks) ... ok
test_process_images__8_batches_1_unit__runs_8_batches (cn_script.batch_hijack_test.TestProcessImagesPatchWorks) ... ok
test_process_images__only_simple_units__forwards (cn_script.batch_hijack_test.TestProcessImagesPatchWorks) ... ok
test_process_images_no_units_forwards (cn_script.batch_hijack_test.TestProcessImagesPatchWorks) ... ok
controlnet batch mode
controlnet batch mode
controlnet batch mode
controlnet batch mode
controlnet batch mode
controlnet batch mode
2023-06-25 04:50:41,288 - ControlNet - WARNING - No ControlNetUnit detected in args. It is very likely that you are having an extension conflict.Here are args received by ControlNet: [].
test_prepare_mask (cn_script.cn_script_test.TestPrepareMask) ... ok
test_bound_check_params (cn_script.cn_script_test.TestScript) ... ok
2023-06-25 04:50:41,290 - ControlNet - WARNING - [canny.processor_res] Invalid value(-100), using default value 512.
2023-06-25 04:50:41,290 - ControlNet - WARNING - [canny.threshold_a] Invalid value(-1), using default value 100.
2023-06-25 04:50:41,290 - ControlNet - WARNING - [canny.threshold_b] Invalid value(-1), using default value 200.
2023-06-25 04:50:41,290 - ControlNet - WARNING - [canny.processor_res] Invalid value(-1), using default value 512.
2023-06-25 04:50:41,290 - ControlNet - WARNING - [canny.threshold_a] Invalid value(-100), using default value 100.
2023-06-25 04:50:41,290 - ControlNet - WARNING - [canny.threshold_b] Invalid value(-1), using default value 200.
2023-06-25 04:50:41,291 - ControlNet - WARNING - [canny.processor_res] Invalid value(-1), using default value 512.
2023-06-25 04:50:41,291 - ControlNet - WARNING - [canny.threshold_a] Invalid value(-1), using default value 100.
2023-06-25 04:50:41,291 - ControlNet - WARNING - [canny.threshold_b] Invalid value(-100), using default value 200.
2023-06-25 04:50:41,291 - ControlNet - WARNING - [mlsd.processor_res] Invalid value(-100), using default value 512.
2023-06-25 04:50:41,291 - ControlNet - WARNING - [mlsd.threshold_a] Invalid value(-1), using default value 0.1.
2023-06-25 04:50:41,291 - ControlNet - WARNING - [mlsd.threshold_b] Invalid value(-1), using default value 0.1.
2023-06-25 04:50:41,291 - ControlNet - WARNING - [mlsd.processor_res] Invalid value(-1), using default value 512.
2023-06-25 04:50:41,291 - ControlNet - WARNING - [mlsd.threshold_a] Invalid value(-100), using default value 0.1.
2023-06-25 04:50:41,291 - ControlNet - WARNING - [mlsd.threshold_b] Invalid value(-1), using default value 0.1.
2023-06-25 04:50:41,291 - ControlNet - WARNING - [mlsd.processor_res] Invalid value(-1), using default value 512.
2023-06-25 04:50:41,291 - ControlNet - WARNING - [mlsd.threshold_a] Invalid value(-1), using default value 0.1.
2023-06-25 04:50:41,291 - ControlNet - WARNING - [mlsd.threshold_b] Invalid value(-100), using default value 0.1.
2023-06-25 04:50:41,291 - ControlNet - WARNING - [hed.processor_res] Invalid value(-100), using default value 512.
2023-06-25 04:50:41,291 - ControlNet - WARNING - [hed.processor_res] Invalid value(-1), using default value 512.
2023-06-25 04:50:41,291 - ControlNet - WARNING - [hed.processor_res] Invalid value(-1), using default value 512.
2023-06-25 04:50:41,291 - ControlNet - WARNING - [scribble_hed.processor_res] Invalid value(-100), using default value 512.
2023-06-25 04:50:41,291 - ControlNet - WARNING - [scribble_hed.processor_res] Invalid value(-1), using default value 512.
2023-06-25 04:50:41,291 - ControlNet - WARNING - [scribble_hed.processor_res] Invalid value(-1), using default value 512.
2023-06-25 04:50:41,291 - ControlNet - WARNING - [hed_safe.processor_res] Invalid value(-100), using default value 512.
2023-06-25 04:50:41,291 - ControlNet - WARNING - [hed_safe.processor_res] Invalid value(-1), using default value 512.
2023-06-25 04:50:41,292 - ControlNet - WARNING - [hed_safe.processor_res] Invalid value(-1), using default value 512.
2023-06-25 04:50:41,292 - ControlNet - WARNING - [openpose.processor_res] Invalid value(-100), using default value 512.
2023-06-25 04:50:41,292 - ControlNet - WARNING - [openpose.processor_res] Invalid value(-1), using default value 512.
2023-06-25 04:50:41,292 - ControlNet - WARNING - [openpose.processor_res] Invalid value(-1), using default value 512.
2023-06-25 04:50:41,292 - ControlNet - WARNING - [openpose_full.processor_res] Invalid value(-100), using default value 512.
2023-06-25 04:50:41,292 - ControlNet - WARNING - [openpose_full.processor_res] Invalid value(-1), using default value 512.
2023-06-25 04:50:41,292 - ControlNet - WARNING - [openpose_full.processor_res] Invalid value(-1), using default value 512.
2023-06-25 04:50:41,292 - ControlNet - WARNING - [segmentation.processor_res] Invalid value(-100), using default value 512.
2023-06-25 04:50:41,292 - ControlNet - WARNING - [segmentation.processor_res] Invalid value(-1), using default value 512.
2023-06-25 04:50:41,292 - ControlNet - WARNING - [segmentation.processor_res] Invalid value(-1), using default value 512.
2023-06-25 04:50:41,292 - ControlNet - WARNING - [depth.processor_res] Invalid value(-100), using default value 512.
2023-06-25 04:50:41,292 - ControlNet - WARNING - [depth.processor_res] Invalid value(-1), using default value 512.
2023-06-25 04:50:41,292 - ControlNet - WARNING - [depth.processor_res] Invalid value(-1), using default value 512.
2023-06-25 04:50:41,292 - ControlNet - WARNING - [depth_leres.processor_res] Invalid value(-100), using default value 512.
2023-06-25 04:50:41,292 - ControlNet - WARNING - [depth_leres.threshold_a] Invalid value(-1), using default value 0.
2023-06-25 04:50:41,292 - ControlNet - WARNING - [depth_leres.threshold_b] Invalid value(-1), using default value 0.
2023-06-25 04:50:41,292 - ControlNet - WARNING - [depth_leres.processor_res] Invalid value(-1), using default value 512.
2023-06-25 04:50:41,292 - ControlNet - WARNING - [depth_leres.threshold_a] Invalid value(-100), using default value 0.
2023-06-25 04:50:41,293 - ControlNet - WARNING - [depth_leres.threshold_b] Invalid value(-1), using default value 0.
2023-06-25 04:50:41,293 - ControlNet - WARNING - [depth_leres.processor_res] Invalid value(-1), using default value 512.
2023-06-25 04:50:41,293 - ControlNet - WARNING - [depth_leres.threshold_a] Invalid value(-1), using default value 0.
2023-06-25 04:50:41,293 - ControlNet - WARNING - [depth_leres.threshold_b] Invalid value(-100), using default value 0.
2023-06-25 04:50:41,293 - ControlNet - WARNING - [depth_leres++.processor_res] Invalid value(-100), using default value 512.
2023-06-25 04:50:41,293 - ControlNet - WARNING - [depth_leres++.threshold_a] Invalid value(-1), using default value 0.
2023-06-25 04:50:41,293 - ControlNet - WARNING - [depth_leres++.threshold_b] Invalid value(-1), using default value 0.
2023-06-25 04:50:41,293 - ControlNet - WARNING - [depth_leres++.processor_res] Invalid value(-1), using default value 512.
2023-06-25 04:50:41,293 - ControlNet - WARNING - [depth_leres++.threshold_a] Invalid value(-100), using default value 0.
2023-06-25 04:50:41,293 - ControlNet - WARNING - [depth_leres++.threshold_b] Invalid value(-1), using default value 0.
2023-06-25 04:50:41,293 - ControlNet - WARNING - [depth_leres++.processor_res] Invalid value(-1), using default value 512.
2023-06-25 04:50:41,293 - ControlNet - WARNING - [depth_leres++.threshold_a] Invalid value(-1), using default value 0.
2023-06-25 04:50:41,293 - ControlNet - WARNING - [depth_leres++.threshold_b] Invalid value(-100), using default value 0.
2023-06-25 04:50:41,293 - ControlNet - WARNING - [normal_map.processor_res] Invalid value(-100), using default value 512.
2023-06-25 04:50:41,293 - ControlNet - WARNING - [normal_map.threshold_a] Invalid value(-1), using default value 0.4.
2023-06-25 04:50:41,293 - ControlNet - WARNING - [normal_map.processor_res] Invalid value(-1), using default value 512.
2023-06-25 04:50:41,293 - ControlNet - WARNING - [normal_map.threshold_a] Invalid value(-100), using default value 0.4.
2023-06-25 04:50:41,293 - ControlNet - WARNING - [normal_map.processor_res] Invalid value(-1), using default value 512.
2023-06-25 04:50:41,293 - ControlNet - WARNING - [normal_map.threshold_a] Invalid value(-1), using default value 0.4.
2023-06-25 04:50:41,293 - ControlNet - WARNING - [threshold.processor_res] Invalid value(-100), using default value 512.
2023-06-25 04:50:41,293 - ControlNet - WARNING - [threshold.threshold_a] Invalid value(-1), using default value 127.
2023-06-25 04:50:41,293 - ControlNet - WARNING - [threshold.processor_res] Invalid value(-1), using default value 512.
2023-06-25 04:50:41,293 - ControlNet - WARNING - [threshold.threshold_a] Invalid value(-100), using default value 127.
2023-06-25 04:50:41,294 - ControlNet - WARNING - [threshold.processor_res] Invalid value(-1), using default value 512.
2023-06-25 04:50:41,294 - ControlNet - WARNING - [threshold.threshold_a] Invalid value(-1), using default value 127.
2023-06-25 04:50:41,294 - ControlNet - WARNING - [scribble_xdog.processor_res] Invalid value(-100), using default value 512.
2023-06-25 04:50:41,294 - ControlNet - WARNING - [scribble_xdog.threshold_a] Invalid value(-1), using default value 32.
2023-06-25 04:50:41,294 - ControlNet - WARNING - [scribble_xdog.processor_res] Invalid value(-1), using default value 512.
2023-06-25 04:50:41,294 - ControlNet - WARNING - [scribble_xdog.threshold_a] Invalid value(-100), using default value 32.
2023-06-25 04:50:41,294 - ControlNet - WARNING - [scribble_xdog.processor_res] Invalid value(-1), using default value 512.
2023-06-25 04:50:41,294 - ControlNet - WARNING - [scribble_xdog.threshold_a] Invalid value(-1), using default value 32.
2023-06-25 04:50:41,294 - ControlNet - WARNING - [tile_resample.threshold_a] Invalid value(-1), using default value 1.0.
2023-06-25 04:50:41,294 - ControlNet - WARNING - [tile_resample.threshold_a] Invalid value(-100), using default value 1.0.
2023-06-25 04:50:41,294 - ControlNet - WARNING - [tile_resample.threshold_a] Invalid value(-1), using default value 1.0.
2023-06-25 04:50:41,294 - ControlNet - WARNING - [tile_colorfix.threshold_a] Invalid value(-1), using default value 8.0.
2023-06-25 04:50:41,294 - ControlNet - WARNING - [tile_colorfix.threshold_a] Invalid value(-100), using default value 8.0.
2023-06-25 04:50:41,294 - ControlNet - WARNING - [tile_colorfix.threshold_a] Invalid value(-1), using default value 8.0.
2023-06-25 04:50:41,294 - ControlNet - WARNING - [tile_colorfix+sharp.threshold_a] Invalid value(-1), using default value 8.0.
2023-06-25 04:50:41,294 - ControlNet - WARNING - [tile_colorfix+sharp.threshold_b] Invalid value(-1), using default value 1.0.
2023-06-25 04:50:41,294 - ControlNet - WARNING - [tile_colorfix+sharp.threshold_a] Invalid value(-100), using default value 8.0.
test_choose_input_image (cn_script.cn_script_test.TestScript) ... ok
test_empty_all_seeds (cn_script.cn_script_test.TestSetNumpySeed) ... ok
test_invalid_seed_subseed (cn_script.cn_script_test.TestSetNumpySeed) ... ok
test_random_state_change (cn_script.cn_script_test.TestSetNumpySeed) ... ok
test_seed_subseed_minus_one (cn_script.cn_script_test.TestSetNumpySeed) ... ok
test_valid_seed_subseed (cn_script.cn_script_test.TestSetNumpySeed) ... ok
test_cache_size (cn_script.utils_test.TestNumpyLruCache) ... ok
test_different_array_same_data (cn_script.utils_test.TestNumpyLruCache) ... ok
test_large_array (cn_script.utils_test.TestNumpyLruCache) ... ok
test_same_array (cn_script.utils_test.TestNumpyLruCache) ... ok
test_empty_dict_works (external_code_api.external_code_test.TestControlNetUnitConversion) ... ok
test_image_alias_works (external_code_api.external_code_test.TestControlNetUnitConversion) ... ok
test_image_works (external_code_api.external_code_test.TestControlNetUnitConversion) ... ok
test_masked_image_works (external_code_api.external_code_test.TestControlNetUnitConversion) ... ok
test_image_without_mask (external_code_api.external_code_test.TestControlNetUnitImageToDict) ... ok
test_masked_image_dict (external_code_api.external_code_test.TestControlNetUnitImageToDict) ... ok
test_masked_image_tuple (external_code_api.external_code_test.TestControlNetUnitImageToDict) ... ok
test_none (external_code_api.external_code_test.TestControlNetUnitImageToDict) ... ok
2023-06-25 04:50:41,294 - ControlNet - WARNING - [tile_colorfix+sharp.threshold_b] Invalid value(-1), using default value 1.0.
2023-06-25 04:50:41,294 - ControlNet - WARNING - [tile_colorfix+sharp.threshold_a] Invalid value(-1), using default value 8.0.
2023-06-25 04:50:41,294 - ControlNet - WARNING - [tile_colorfix+sharp.threshold_b] Invalid value(-100), using default value 1.0.
2023-06-25 04:50:41,294 - ControlNet - WARNING - [reference_only.threshold_a] Invalid value(-1), using default value 0.5.
2023-06-25 04:50:41,295 - ControlNet - WARNING - [reference_only.threshold_a] Invalid value(-100), using default value 0.5.
2023-06-25 04:50:41,295 - ControlNet - WARNING - [reference_only.threshold_a] Invalid value(-1), using default value 0.5.
2023-06-25 04:50:41,295 - ControlNet - WARNING - [reference_adain.threshold_a] Invalid value(-1), using default value 0.5.
2023-06-25 04:50:41,295 - ControlNet - WARNING - [reference_adain.threshold_a] Invalid value(-100), using default value 0.5.
2023-06-25 04:50:41,295 - ControlNet - WARNING - [reference_adain.threshold_a] Invalid value(-1), using default value 0.5.
2023-06-25 04:50:41,295 - ControlNet - WARNING - [reference_adain+attn.threshold_a] Invalid value(-1), using default value 0.5.
2023-06-25 04:50:41,295 - ControlNet - WARNING - [reference_adain+attn.threshold_a] Invalid value(-100), using default value 0.5.
2023-06-25 04:50:41,295 - ControlNet - WARNING - [reference_adain+attn.threshold_a] Invalid value(-1), using default value 0.5.
2023-06-25 04:50:41,295 - ControlNet - WARNING - [color.processor_res] Invalid value(-100), using default value 512.
2023-06-25 04:50:41,295 - ControlNet - WARNING - [color.processor_res] Invalid value(-1), using default value 512.
2023-06-25 04:50:41,295 - ControlNet - WARNING - [color.processor_res] Invalid value(-1), using default value 512.
2023-06-25 04:50:41,295 - ControlNet - WARNING - [mediapipe_face.processor_res] Invalid value(-100), using default value 512.
2023-06-25 04:50:41,295 - ControlNet - WARNING - [mediapipe_face.threshold_a] Invalid value(-1), using default value 1.
2023-06-25 04:50:41,295 - ControlNet - WARNING - [mediapipe_face.threshold_b] Invalid value(-1), using default value 0.5.
2023-06-25 04:50:41,295 - ControlNet - WARNING - [mediapipe_face.processor_res] Invalid value(-1), using default value 512.
2023-06-25 04:50:41,295 - ControlNet - WARNING - [mediapipe_face.threshold_a] Invalid value(-100), using default value 1.
2023-06-25 04:50:41,295 - ControlNet - WARNING - [mediapipe_face.threshold_b] Invalid value(-1), using default value 0.5.
2023-06-25 04:50:41,295 - ControlNet - WARNING - [mediapipe_face.processor_res] Invalid value(-1), using default value 512.
2023-06-25 04:50:41,295 - ControlNet - WARNING - [mediapipe_face.threshold_a] Invalid value(-1), using default value 1.
2023-06-25 04:50:41,296 - ControlNet - WARNING - [mediapipe_face.threshold_b] Invalid value(-100), using default value 0.5.
2023-06-25 04:50:41,298 - ControlNet - WARNING - list index out of range
2023-06-25 04:50:41,298 - ControlNet - WARNING - Warning: Failed to use consistent random seed.
2023-06-25 04:50:41,298 - ControlNet - WARNING - invalid literal for int() with base 10: 'invalid'
2023-06-25 04:50:41,298 - ControlNet - WARNING - Warning: Failed to use consistent random seed.
test_empty_resizes_extra_args (external_code_api.external_code_test.TestExternalCodeWorking) ... ok
test_empty_resizes_min_args (external_code_api.external_code_test.TestExternalCodeWorking) ... ok
test_bool (external_code_api.external_code_test.TestGetAllUnitsFrom) ... ok
test_dict (external_code_api.external_code_test.TestGetAllUnitsFrom) ... ok
test_inheritance (external_code_api.external_code_test.TestGetAllUnitsFrom) ... ok
2023-06-25 04:50:41,991 - ControlNet - WARNING - No ControlNetUnit detected in args. It is very likely that you are having an extension conflict.Here are args received by ControlNet: [True].
test_none (external_code_api.external_code_test.TestGetAllUnitsFrom) ... ok
test_unitlike (external_code_api.external_code_test.TestGetAllUnitsFrom) ... ok
test_inner_fit (external_code_api.external_code_test.TestPixelPerfectResolution) ... ok
test_outer_fit (external_code_api.external_code_test.TestPixelPerfectResolution) ... ok
2023-06-25 04:50:41,991 - ControlNet - WARNING - No ControlNetUnit detected in args. It is very likely that you are having an extension conflict.Here are args received by ControlNet: [None].
test_empty_converts (external_code_api.script_args_test.TestGetAllUnitsFrom) ... ok
Using model:  control_canny-fp16 [e3fe7712]
2023-06-25 04:50:41,999 - ControlNet - WARNING - No ControlNetUnit detected in args. It is very likely that you are having an extension conflict.Here are args received by ControlNet: [].
test_object_forwards (external_code_api.script_args_test.TestGetAllUnitsFrom) ... ok
test_detect_with_invalid_module_performed (web_api.detect_test.TestDetectEndpointWorking) ... ok
test_detect_with_no_input_images_performed (web_api.detect_test.TestDetectEndpointWorking) ... ok
test_detect_with_valid_args_performed (web_api.detect_test.TestDetectEndpointWorking) ... ok
test_img2img_alwayson_scripts_default_units (web_api.img2img_test.TestImg2ImgWorkingBase) ... ok
test_img2img_default_params (web_api.img2img_test.TestImg2ImgWorkingBase) ... ok
test_img2img_simple_performed (web_api.img2img_test.TestImg2ImgWorkingBase) ... ok
test_call_invalid_params (web_api.txt2img_test.TestAlwaysonTxt2ImgWorking) ... ok
test_call_with_preprocessors (web_api.txt2img_test.TestAlwaysonTxt2ImgWorking) ... ok
test_txt2img_2_units (web_api.txt2img_test.TestAlwaysonTxt2ImgWorking) ... ok
test_txt2img_8_units (web_api.txt2img_test.TestAlwaysonTxt2ImgWorking) ... ok
test_txt2img_alwayson_scripts_default_units (web_api.txt2img_test.TestAlwaysonTxt2ImgWorking) ... ok
test_txt2img_batch_performed (web_api.txt2img_test.TestAlwaysonTxt2ImgWorking) ... ok
test_txt2img_default_params (web_api.txt2img_test.TestAlwaysonTxt2ImgWorking) ... ok
test_txt2img_multiple_batches_performed (web_api.txt2img_test.TestAlwaysonTxt2ImgWorking) ... ok
test_txt2img_simple_performed (web_api.txt2img_test.TestAlwaysonTxt2ImgWorking) ... ok

----------------------------------------------------------------------
Ran 64 tests in 132.884s

OK
```


### Additional information

Some related issues and PRs:

- https://github.com/Mikubill/sd-webui-controlnet/issues/615
- https://github.com/Mikubill/sd-webui-controlnet/pull/678
- https://github.com/Mikubill/sd-webui-controlnet/issues/1541
- https://github.com/Mikubill/sd-webui-controlnet/pull/1567#issuecomment-1608201325