cucu 1.0.12__tar.gz → 1.1.1__tar.gz
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 cucu might be problematic. Click here for more details.
- {cucu-1.0.12 → cucu-1.1.1}/.circleci/config.yml +5 -8
- {cucu-1.0.12 → cucu-1.1.1}/.github/workflows/build.yml +7 -7
- {cucu-1.0.12 → cucu-1.1.1}/.github/workflows/publish-production.yml +1 -1
- {cucu-1.0.12 → cucu-1.1.1}/.github/workflows/publish-test.yml +1 -1
- cucu-1.1.1/.python-version +1 -0
- {cucu-1.0.12 → cucu-1.1.1}/CHANGELOG.md +11 -1
- {cucu-1.0.12 → cucu-1.1.1}/PKG-INFO +6 -6
- cucu-1.1.1/features/cli/debug.feature +16 -0
- {cucu-1.0.12 → cucu-1.1.1}/pyproject.toml +6 -6
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/cli/core.py +6 -6
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/cli/run.py +3 -3
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/environment.py +3 -3
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/logger.py +0 -14
- {cucu-1.0.12 → cucu-1.1.1}/uv.lock +154 -318
- cucu-1.0.12/.python-version +0 -1
- cucu-1.0.12/features/cli/ipdb.feature +0 -16
- {cucu-1.0.12 → cucu-1.1.1}/.env +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/.github/CODEOWNERS +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/.github/workflows/create_a_new_release.yml +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/.gitignore +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/.pre-commit-config.yaml +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/CODE_OF_CONDUCT.md +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/CONTRIBUTING.md +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/CONTRIBUTORS.md +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/LICENSE +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/Makefile +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/README.md +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/bin/cucu +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/bin/start_seleniarm_hub.sh +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/bin/start_selenium_hub.sh +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/cortex.yaml +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/custom_step_test/custom_step.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/custom_step_test/steps/__init__.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/custom_step_test/steps/cucu_steps.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/echo.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/environment.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/feature_skipping_scenarios_by_file_presence.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/feature_with_background.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/feature_with_background_using_substeps.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/feature_with_failing_scenario.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/feature_with_failing_scenario_with_table.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/feature_with_failing_scenario_with_web.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/feature_with_logging.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/feature_with_long_names.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/feature_with_mixed_results.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/feature_with_multilines_and_tables.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/feature_with_passing_scenario.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/feature_with_passing_scenario_with_web.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/feature_with_platform_specific_scenarios.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/feature_with_scenario_outline.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/feature_with_scenario_using_nth_type.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/feature_with_tagging.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/feature_with_xml_tags.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/multiple_scenarios_with_browser_steps.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/scenario_stop_retry_early.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/scenario_that_fails_with_after_scenario_steps.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/scenario_that_passes_with_after_scenario_steps.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/scenario_with_console_logs.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/scenario_with_substeps.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/scenario_with_substeps_and_logging.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/slow_features/slow_feature1.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/slow_features/slow_feature2.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/slow_features/slow_feature3.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/slow_features/slow_feature4.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/slow_features/slow_feature5.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/steps/__init__.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/steps/cucu_steps.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/tagged_features/tagged_feature1.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/tagged_features/tagged_feature2.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/tagged_features/tagged_feature3.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/with_secret/cucurc.yml +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/features/with_secret/scenario_with_comments.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/unit/ansi.log +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/unit/ansi.log.html +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/www/broken_images.html +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/www/buttons.html +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/www/checkboxes.html +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/www/clipboard.html +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/www/comboboxes.html +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/www/console_logging.html +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/www/cookies.html +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/www/counter.html +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/www/drag_drop.html +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/www/draggables.html +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/www/dropdowns.html +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/www/duplicate_buttons.html +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/www/duplicate_inputs.html +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/www/dynamic_dropdown.html +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/www/file.txt +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/www/files.html +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/www/frames.html +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/www/fuzzy_rules.html +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/www/images.html +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/www/inputs.html +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/www/js/util.js +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/www/links.html +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/www/nothing_to_see_here.html +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/www/page_that_loads_forever.html +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/www/radio_buttons.html +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/www/stars.png +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/www/tables.html +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/www/tabs.html +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/data/www/text.html +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/browser/browser_tab_managemenet.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/browser/browser_window_managemenet.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/browser/buttons.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/browser/checkboxes.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/browser/clipboard.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/browser/comboboxes.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/browser/console_logs.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/browser/cookies.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/browser/draggables.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/browser/dropdowns.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/browser/duplicate_buttons.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/browser/duplicate_draggables.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/browser/duplicate_inputs.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/browser/file_downloads.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/browser/file_upload.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/browser/frames.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/browser/fuzzy_rules.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/browser/helpers.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/browser/images.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/browser/inputs.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/browser/inputs_limits.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/browser/links.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/browser/mht.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/browser/page_checks.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/browser/radio_buttons.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/browser/tables.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/browser/tabs.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/browser/text.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/cli/config.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/cli/help.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/cli/internals.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/cli/lint.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/cli/lsp.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/cli/report_basics.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/cli/report_search_and_sorting.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/cli/report_with_custom_failure_handler.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/cli/report_with_custom_subheader.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/cli/report_with_custom_tags.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/cli/run.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/cli/run_outputs.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/cli/run_with_hooks.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/cli/run_with_junit.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/cli/run_with_logging.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/cli/run_with_report.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/cli/run_with_tags.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/cli/run_with_thread_dumper.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/cli/run_with_workers.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/cli/secrets.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/cli/steps.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/cli/vars.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/environment.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/flow_control/before_retry_handlers.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/flow_control/repeating_steps.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/flow_control/run_after_scenario_steps.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/flow_control/run_and_measure.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/flow_control/run_other_features.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/flow_control/run_scenarios_conditionally.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/flow_control/run_steps_conditionally.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/flow_control/run_steps_on_element_visibilty.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/flow_control/wait_for_steps.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/os/command_steps.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/os/file_steps.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/os/platform_steps.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/os/screenshot.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/os/variables.feature +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/steps/__init__.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/features/steps/cucu_steps.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/logo.png +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/renovate.json +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/sonar-project.properties +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/__init__.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/ansi_parser.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/behave_tweaks.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/browser/__init__.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/browser/core.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/browser/frames.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/browser/selenium.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/browser/selenium_tweaks.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/cli/__init__.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/cli/steps.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/cli/thread_dumper.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/config.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/edgedriver_autoinstaller/README.md +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/edgedriver_autoinstaller/__init__.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/edgedriver_autoinstaller/utils.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/external/jquery/jquery-3.5.1.min.js +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/formatter/__init__.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/formatter/cucu.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/formatter/json.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/formatter/junit.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/fuzzy/__init__.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/fuzzy/core.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/fuzzy/fuzzy.js +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/helpers.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/hooks.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/language_server/__init__.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/language_server/core.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/lint/__init__.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/lint/linter.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/lint/rules/format.yaml +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/matcher/__init__.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/matcher/core.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/page_checks.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/reporter/__init__.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/reporter/external/bootstrap.min.css +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/reporter/external/bootstrap.min.js +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/reporter/external/dataTables.bootstrap.min.css +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/reporter/external/dataTables.bootstrap.min.js +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/reporter/external/jquery-3.5.1.min.js +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/reporter/external/jquery.dataTables.min.js +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/reporter/external/popper.min.js +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/reporter/favicon.png +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/reporter/html.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/reporter/templates/feature.html +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/reporter/templates/flat.html +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/reporter/templates/index.html +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/reporter/templates/layout.html +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/reporter/templates/scenario.html +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/steps/__init__.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/steps/base_steps.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/steps/browser_steps.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/steps/button_steps.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/steps/checkbox_steps.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/steps/command_steps.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/steps/comment_steps.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/steps/draggable_steps.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/steps/dropdown_steps.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/steps/file_input_steps.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/steps/filesystem_steps.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/steps/flow_control_steps.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/steps/image_steps.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/steps/input_steps.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/steps/link_steps.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/steps/menuitem_steps.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/steps/platform_steps.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/steps/radio_steps.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/steps/step_utils.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/steps/tab_steps.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/steps/table_steps.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/steps/tables.js +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/steps/text_steps.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/steps/variable_steps.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/steps/webserver_steps.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/src/cucu/utils.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/tests/__init__.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/tests/test_behave_tweaks.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/tests/test_browser.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/tests/test_config.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/tests/test_core.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/tests/test_language_server.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/tests/test_reporter_parser.py +0 -0
- {cucu-1.0.12 → cucu-1.1.1}/tests/test_table_steps.py +0 -0
|
@@ -31,14 +31,14 @@ workflows:
|
|
|
31
31
|
jobs:
|
|
32
32
|
build:
|
|
33
33
|
docker:
|
|
34
|
-
- image: cimg/python:3.
|
|
34
|
+
- image: cimg/python:3.13@sha256:a00bfa949271c5519c63d623c6c5ab61fa0868f88ffa3a66b0983bf7df376f3d
|
|
35
35
|
resource_class: medium
|
|
36
36
|
steps:
|
|
37
37
|
- checkout
|
|
38
38
|
- inline-orb-uv/setup-uv
|
|
39
39
|
- run:
|
|
40
|
-
name: install cucu with Python 3.
|
|
41
|
-
command: uv sync -p 3.
|
|
40
|
+
name: install cucu with Python 3.13
|
|
41
|
+
command: uv sync -p 3.13 --dev
|
|
42
42
|
- run:
|
|
43
43
|
name: run pre-commit validations
|
|
44
44
|
command: uv run pre-commit run --show-diff-on-failure --from-ref origin/HEAD --to-ref HEAD
|
|
@@ -55,10 +55,7 @@ jobs:
|
|
|
55
55
|
type: string
|
|
56
56
|
default: "chrome"
|
|
57
57
|
docker:
|
|
58
|
-
- image: cimg/python:3.
|
|
59
|
-
environment:
|
|
60
|
-
# Starting with python 3.12 coverage could be 2x slower so use experimental COVERAGE_CORE=sysmon
|
|
61
|
-
COVERAGE_CORE: sysmon
|
|
58
|
+
- image: cimg/python:3.13@sha256:a00bfa949271c5519c63d623c6c5ab61fa0868f88ffa3a66b0983bf7df376f3d
|
|
62
59
|
- image: selenium/standalone-<<parameters.browser>>:126.0
|
|
63
60
|
environment:
|
|
64
61
|
SE_ENABLE_TRACING: false
|
|
@@ -130,7 +127,7 @@ jobs:
|
|
|
130
127
|
|
|
131
128
|
coverage:
|
|
132
129
|
docker:
|
|
133
|
-
- image: cimg/python:3.
|
|
130
|
+
- image: cimg/python:3.13@sha256:a00bfa949271c5519c63d623c6c5ab61fa0868f88ffa3a66b0983bf7df376f3d
|
|
134
131
|
resource_class: small
|
|
135
132
|
steps:
|
|
136
133
|
- checkout
|
|
@@ -12,7 +12,7 @@ jobs:
|
|
|
12
12
|
steps:
|
|
13
13
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
|
14
14
|
- name: Install the latest version of uv
|
|
15
|
-
uses: astral-sh/setup-uv@
|
|
15
|
+
uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5
|
|
16
16
|
with:
|
|
17
17
|
enable-cache: true
|
|
18
18
|
- name: Install cucu with Python 3.12
|
|
@@ -28,7 +28,7 @@ jobs:
|
|
|
28
28
|
steps:
|
|
29
29
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
|
30
30
|
- name: Install the latest version of uv
|
|
31
|
-
uses: astral-sh/setup-uv@
|
|
31
|
+
uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5
|
|
32
32
|
with:
|
|
33
33
|
enable-cache: true
|
|
34
34
|
- name: Install cucu with Python 3.12
|
|
@@ -45,12 +45,12 @@ jobs:
|
|
|
45
45
|
tar cvfz output.tgz output
|
|
46
46
|
- name: save output
|
|
47
47
|
if: always()
|
|
48
|
-
uses: actions/upload-artifact@
|
|
48
|
+
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
|
|
49
49
|
with:
|
|
50
50
|
name: unit-tests
|
|
51
51
|
path: output.tgz
|
|
52
52
|
- name: Publish Test Results
|
|
53
|
-
uses: EnricoMi/publish-unit-test-result-action@
|
|
53
|
+
uses: EnricoMi/publish-unit-test-result-action@afb2984f4d89672b2f9d9c13ae23d53779671984 # v2
|
|
54
54
|
if: always()
|
|
55
55
|
with:
|
|
56
56
|
check_name: "unit results"
|
|
@@ -83,7 +83,7 @@ jobs:
|
|
|
83
83
|
steps:
|
|
84
84
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
|
85
85
|
- name: Install the latest version of uv
|
|
86
|
-
uses: astral-sh/setup-uv@
|
|
86
|
+
uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5
|
|
87
87
|
with:
|
|
88
88
|
enable-cache: true
|
|
89
89
|
- name: Install Python 3.12
|
|
@@ -113,12 +113,12 @@ jobs:
|
|
|
113
113
|
tar cvfz output.tgz output
|
|
114
114
|
- name: save output
|
|
115
115
|
if: always()
|
|
116
|
-
uses: actions/upload-artifact@
|
|
116
|
+
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
|
|
117
117
|
with:
|
|
118
118
|
name: ${{ matrix.browser }}-tests
|
|
119
119
|
path: output.tgz
|
|
120
120
|
- name: Publish Test Results
|
|
121
|
-
uses: EnricoMi/publish-unit-test-result-action@
|
|
121
|
+
uses: EnricoMi/publish-unit-test-result-action@afb2984f4d89672b2f9d9c13ae23d53779671984 # v2
|
|
122
122
|
if: always()
|
|
123
123
|
with:
|
|
124
124
|
check_name: "${{ matrix.browser }} results"
|
|
@@ -18,7 +18,7 @@ jobs:
|
|
|
18
18
|
ref: main
|
|
19
19
|
fetch-depth: 0
|
|
20
20
|
- name: Install the latest version of uv
|
|
21
|
-
uses: astral-sh/setup-uv@
|
|
21
|
+
uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5
|
|
22
22
|
with:
|
|
23
23
|
enable-cache: true
|
|
24
24
|
- name: Install cucu with Python 3.12
|
|
@@ -20,7 +20,7 @@ jobs:
|
|
|
20
20
|
ref: main
|
|
21
21
|
fetch-depth: 0
|
|
22
22
|
- name: Install the latest version of uv
|
|
23
|
-
uses: astral-sh/setup-uv@
|
|
23
|
+
uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5
|
|
24
24
|
with:
|
|
25
25
|
version: "latest"
|
|
26
26
|
- name: Install cucu with Python 3.12
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.13
|
|
@@ -5,8 +5,18 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project closely adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## 1.1.1
|
|
9
|
+
- Chore - bump coverage lib from 7.6.12 to 7.8.0
|
|
10
|
+
- Chore - change CI to not use experimental COVERAGE_CORE=sysmon
|
|
11
|
+
|
|
12
|
+
## 1.1.0
|
|
13
|
+
- Add - now python 3.13 compatible
|
|
14
|
+
- Change - use stdlib pdb instead of unsupported ipdb
|
|
15
|
+
- Change - rename CUCU_IPDB_ON_FAILURE => to CUCU_DEBUG_ON_FAILURE
|
|
16
|
+
- Chore - bump selenium lib to 4.31.0
|
|
17
|
+
|
|
8
18
|
## 1.0.13
|
|
9
|
-
-
|
|
19
|
+
- Change - rename logger.warn to logger.warning
|
|
10
20
|
|
|
11
21
|
## 1.0.12
|
|
12
22
|
- Chore - add coverage badge
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cucu
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.1.1
|
|
4
4
|
Summary: Easy BDD web testing
|
|
5
5
|
Project-URL: Homepage, https://github.com/dominodatalab/cucu/wiki
|
|
6
6
|
Project-URL: Download, https://pypi.org/project/cucu/
|
|
@@ -23,18 +23,18 @@ Classifier: Programming Language :: Python :: 3.9
|
|
|
23
23
|
Classifier: Programming Language :: Python :: 3.10
|
|
24
24
|
Classifier: Programming Language :: Python :: 3.11
|
|
25
25
|
Classifier: Programming Language :: Python :: 3.12
|
|
26
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
26
27
|
Classifier: Topic :: Software Development :: Testing :: BDD
|
|
27
28
|
Requires-Python: >=3.9
|
|
28
29
|
Requires-Dist: beautifulsoup4~=4.13.3
|
|
29
30
|
Requires-Dist: behave~=1.2.6
|
|
30
31
|
Requires-Dist: chromedriver-autoinstaller~=0.6.2
|
|
31
32
|
Requires-Dist: click~=8.1.7
|
|
32
|
-
Requires-Dist: coverage[toml]~=7.
|
|
33
|
+
Requires-Dist: coverage[toml]~=7.8
|
|
33
34
|
Requires-Dist: geckodriver-autoinstaller~=0.1.0
|
|
34
35
|
Requires-Dist: humanize~=4.12.1
|
|
35
36
|
Requires-Dist: importlib-metadata~=8.6.1
|
|
36
|
-
Requires-Dist:
|
|
37
|
-
Requires-Dist: jellyfish~=1.1.3
|
|
37
|
+
Requires-Dist: jellyfish>=1.1
|
|
38
38
|
Requires-Dist: jinja2~=3.1.3
|
|
39
39
|
Requires-Dist: lsprotocol~=2023.0.1
|
|
40
40
|
Requires-Dist: mpire~=2.10.2
|
|
@@ -42,9 +42,9 @@ Requires-Dist: psutil>=6.0
|
|
|
42
42
|
Requires-Dist: pygls~=1.3.1
|
|
43
43
|
Requires-Dist: pyyaml~=6.0.1
|
|
44
44
|
Requires-Dist: requests<3.0.0,>=2.31.0
|
|
45
|
-
Requires-Dist: selenium~=4.
|
|
45
|
+
Requires-Dist: selenium~=4.31
|
|
46
46
|
Requires-Dist: tabulate~=0.9.0
|
|
47
|
-
Requires-Dist: tenacity
|
|
47
|
+
Requires-Dist: tenacity>=9.0
|
|
48
48
|
Description-Content-Type: text/markdown
|
|
49
49
|
|
|
50
50
|
[](https://pypi.org/project/cucu/)
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
Feature: debug
|
|
2
|
+
As a developer I want the test writer to be able to use the debug console to
|
|
3
|
+
debug test runs.
|
|
4
|
+
|
|
5
|
+
Scenario: User gets the debug console to show when hitting a failure and quit
|
|
6
|
+
Given I run the following script and save stdout to "STDOUT", stderr to "STDERR" and expect exit code "1"
|
|
7
|
+
"""
|
|
8
|
+
echo 'quit\n' | cucu run data/features/feature_with_failing_scenario.feature --results {CUCU_RESULTS_DIR}/debug-debugging-results --debug-on-failure
|
|
9
|
+
"""
|
|
10
|
+
# XXX: temporary solution as the debug output contains ansi codes we can't
|
|
11
|
+
# seem to make debug output stop producing those.
|
|
12
|
+
Then I strip ansi codes from "{STDOUT}" and save to the variable "STDOUT"
|
|
13
|
+
And I should see "{STDOUT}" contains the following
|
|
14
|
+
"""
|
|
15
|
+
-> raise RuntimeError("step fails on purpose")
|
|
16
|
+
"""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "cucu"
|
|
3
|
-
version = "1.
|
|
3
|
+
version = "1.1.1"
|
|
4
4
|
description = "Easy BDD web testing"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = { text = "The Clear BSD License" }
|
|
@@ -33,6 +33,7 @@ classifiers = [
|
|
|
33
33
|
"Programming Language :: Python :: 3.10",
|
|
34
34
|
"Programming Language :: Python :: 3.11",
|
|
35
35
|
"Programming Language :: Python :: 3.12",
|
|
36
|
+
"Programming Language :: Python :: 3.13",
|
|
36
37
|
"Programming Language :: Python :: 3 :: Only",
|
|
37
38
|
"Topic :: Software Development :: Testing :: BDD",
|
|
38
39
|
]
|
|
@@ -46,12 +47,11 @@ dependencies = [
|
|
|
46
47
|
"behave~=1.2.6",
|
|
47
48
|
"chromedriver-autoinstaller~=0.6.2",
|
|
48
49
|
"click~=8.1.7",
|
|
49
|
-
"coverage[toml]~=7.
|
|
50
|
+
"coverage[toml]~=7.8",
|
|
50
51
|
"geckodriver-autoinstaller~=0.1.0",
|
|
51
52
|
"humanize~=4.12.1",
|
|
52
53
|
"importlib-metadata~=8.6.1",
|
|
53
|
-
"
|
|
54
|
-
"jellyfish~=1.1.3",
|
|
54
|
+
"jellyfish>=1.1",
|
|
55
55
|
"jinja2~=3.1.3",
|
|
56
56
|
"lsprotocol~=2023.0.1",
|
|
57
57
|
"mpire~=2.10.2",
|
|
@@ -59,9 +59,9 @@ dependencies = [
|
|
|
59
59
|
"pygls~=1.3.1",
|
|
60
60
|
"pyyaml~=6.0.1",
|
|
61
61
|
"requests>=2.31.0,<3.0.0",
|
|
62
|
-
"selenium~=4.
|
|
62
|
+
"selenium~=4.31",
|
|
63
63
|
"tabulate~=0.9.0",
|
|
64
|
-
"tenacity
|
|
64
|
+
"tenacity>=9.0",
|
|
65
65
|
]
|
|
66
66
|
|
|
67
67
|
[project.urls]
|
|
@@ -90,10 +90,10 @@ def main():
|
|
|
90
90
|
)
|
|
91
91
|
@click.option("-n", "--name", help="used to specify the exact scenario to run")
|
|
92
92
|
@click.option(
|
|
93
|
-
"-
|
|
94
|
-
"--
|
|
93
|
+
"-d",
|
|
94
|
+
"--debug-on-failure/--no-debug-on-failure",
|
|
95
95
|
default=False,
|
|
96
|
-
help="on failure drop into the
|
|
96
|
+
help="on failure drop into the debug shell",
|
|
97
97
|
)
|
|
98
98
|
@click.option(
|
|
99
99
|
"-j",
|
|
@@ -213,7 +213,7 @@ def run(
|
|
|
213
213
|
fail_fast,
|
|
214
214
|
headless,
|
|
215
215
|
name,
|
|
216
|
-
|
|
216
|
+
debug_on_failure,
|
|
217
217
|
junit,
|
|
218
218
|
junit_with_stacktrace,
|
|
219
219
|
logging_level,
|
|
@@ -323,7 +323,7 @@ def run(
|
|
|
323
323
|
fail_fast,
|
|
324
324
|
headless,
|
|
325
325
|
name,
|
|
326
|
-
|
|
326
|
+
debug_on_failure,
|
|
327
327
|
junit,
|
|
328
328
|
results,
|
|
329
329
|
secrets,
|
|
@@ -415,7 +415,7 @@ def run(
|
|
|
415
415
|
fail_fast,
|
|
416
416
|
headless,
|
|
417
417
|
name,
|
|
418
|
-
|
|
418
|
+
debug_on_failure,
|
|
419
419
|
junit,
|
|
420
420
|
results,
|
|
421
421
|
secrets,
|
|
@@ -46,7 +46,7 @@ def behave(
|
|
|
46
46
|
fail_fast,
|
|
47
47
|
headless,
|
|
48
48
|
name,
|
|
49
|
-
|
|
49
|
+
debug_on_failure,
|
|
50
50
|
junit,
|
|
51
51
|
results,
|
|
52
52
|
secrets,
|
|
@@ -81,8 +81,8 @@ def behave(
|
|
|
81
81
|
key, value = variable.split("=")
|
|
82
82
|
os.environ[key] = value
|
|
83
83
|
|
|
84
|
-
if
|
|
85
|
-
os.environ["
|
|
84
|
+
if debug_on_failure:
|
|
85
|
+
os.environ["CUCU_DEBUG_ON_FAILURE"] = "true"
|
|
86
86
|
|
|
87
87
|
os.environ["CUCU_RESULTS_DIR"] = results
|
|
88
88
|
os.environ["CUCU_JUNIT_DIR"] = junit
|
|
@@ -270,11 +270,11 @@ def after_step(ctx, step):
|
|
|
270
270
|
ctx.step_index += 1
|
|
271
271
|
CONFIG["__STEP_SCREENSHOT_COUNT"] = 0
|
|
272
272
|
|
|
273
|
-
if CONFIG.bool("
|
|
273
|
+
if CONFIG.bool("CUCU_DEBUG_ON_FAILURE") and step.status == "failed":
|
|
274
274
|
ctx._runner.stop_capture()
|
|
275
|
-
import
|
|
275
|
+
import pdb
|
|
276
276
|
|
|
277
|
-
|
|
277
|
+
pdb.post_mortem(step.exc_traceback)
|
|
278
278
|
|
|
279
279
|
CONFIG["__CUCU_BEFORE_THIS_SCENARIO_HOOKS"] = []
|
|
280
280
|
|
|
@@ -80,20 +80,6 @@ def info(*args, **kwargs):
|
|
|
80
80
|
logging.info(*args, **kwargs)
|
|
81
81
|
|
|
82
82
|
|
|
83
|
-
@wraps(logging.warning)
|
|
84
|
-
def warn(*args, **kwargs):
|
|
85
|
-
console_handler = logging.getLogger().handlers[0]
|
|
86
|
-
logging_level = console_handler.level
|
|
87
|
-
|
|
88
|
-
if logging_level <= logging.WARN:
|
|
89
|
-
CONFIG["__CUCU_WROTE_TO_OUTPUT"] = True
|
|
90
|
-
|
|
91
|
-
logging.getLogger().warning(
|
|
92
|
-
'The method "warn" is deprecated use warning() instead.'
|
|
93
|
-
)
|
|
94
|
-
logging.getLogger().warning(*args, **kwargs)
|
|
95
|
-
|
|
96
|
-
|
|
97
83
|
@wraps(logging.warning)
|
|
98
84
|
def warning(*args, **kwargs):
|
|
99
85
|
console_handler = logging.getLogger().handlers[0]
|