Skip to content
Merged

Dev #79

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<a href="https://pypi.org/project/je-web-runner/"><img src="https://img.shields.io/pypi/v/je_web_runner" alt="PyPI Version"></a>
<a href="https://pypi.org/project/je-web-runner/"><img src="https://img.shields.io/pypi/pyversions/je_web_runner" alt="Python Version"></a>
<a href="https://github.com/Intergration-Automation-Testing/WebRunner/blob/main/LICENSE"><img src="https://img.shields.io/github/license/Intergration-Automation-Testing/WebRunner" alt="License"></a>
<a href="https://webrunner.readthedocs.io/en/latest/"><img src="https://img.shields.io/badge/docs-readthedocs-blue" alt="Documentation"></a>
<a href="https://webrunner.readthedocs.io/en/latest/"><img src="https://readthedocs.org/projects/webrunner/badge/?version=latest" alt="Documentation Status"></a>
</p>

<p align="center">
Expand Down Expand Up @@ -701,4 +701,3 @@ WebRunner uses a rotating file handler for logging.

This project is licensed under the [MIT License](LICENSE).

Copyright (c) 2021~2023 JE-Chen
4 changes: 2 additions & 2 deletions docs/source/API/api_index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@ WebRunner API Documentation
utils/generate_report.rst
utils/json.rst
utils/package_manager.rst
utils/project.rst
utils/socket_server.rst
utils/test_object.rst
utils/test_reocrd.rst
utils/test_record.rst
utils/xml.rst
utils/scheduler.rst
wrapper/element.rst
wrapper/manager.rst
wrapper/utils.rst
Expand Down
80 changes: 47 additions & 33 deletions docs/source/API/utils/assert.rst
Original file line number Diff line number Diff line change
@@ -1,78 +1,92 @@
Assert API
----
==========

``je_web_runner.utils.assert_value.result_check``

Functions for validating WebDriver and WebElement properties.
Raises ``WebRunnerAssertException`` on validation failure.

.. code-block:: python

def _make_webdriver_check_dict(webdriver_to_check: WebDriver) -> dict:
"""
use to check webdriver current info
:param webdriver_to_check: what webdriver we want to check
:return: webdriver detail dict
Build a dictionary of the WebDriver's current state for validation.

:param webdriver_to_check: WebDriver instance to inspect
:return: dict of WebDriver properties (name, title, current_url, etc.)
"""

.. code-block:: python

def _make_web_element_check_dict(web_element_to_check: WebElement) -> dict:
"""
use to check web element current info
:param web_element_to_check: what web element we want to check
:return: web element detail dict
Build a dictionary of the WebElement's current state for validation.

:param web_element_to_check: WebElement instance to inspect
:return: dict of WebElement properties (tag_name, text, enabled, displayed, etc.)
"""

.. code-block:: python

def check_value(element_name: str, element_value: typing.Any, result_check_dict: dict) -> None:
def check_value(element_name: str, element_value: Any, result_check_dict: dict) -> None:
"""
use to check state
:param element_name: the name of element we want to check
:param element_value: what value element should be
:param result_check_dict: the dict include data name and value to check check_dict is valid or not
:return: None
Check a single value against a result dictionary.

:param element_name: key to look up in result_check_dict
:param element_value: expected value
:param result_check_dict: dictionary of actual values
:raises WebRunnerAssertException: if values don't match
"""

.. code-block:: python

def check_values(check_dict: dict, result_check_dict: dict) -> None:
"""
:param check_dict: dict include data name and value to check
:param result_check_dict: the dict include data name and value to check check_dict is valid or not
:return: None
Check multiple key-value pairs against a result dictionary.

:param check_dict: dict of {name: expected_value} pairs
:param result_check_dict: dictionary of actual values
:raises WebRunnerAssertException: if any value doesn't match
"""

.. code-block:: python

def check_webdriver_value(element_name: str, element_value: typing.Any, webdriver_to_check: WebDriver) -> None:
def check_webdriver_value(element_name: str, element_value: Any, webdriver_to_check: WebDriver) -> None:
"""
:param element_name: the name of element we want to check
:param element_value: what value element should be
:param webdriver_to_check: the dict include data name and value to check result_dict is valid or not
:return: None
Check a single WebDriver property against an expected value.

:param element_name: property name (e.g., "name", "title")
:param element_value: expected value
:param webdriver_to_check: WebDriver instance to validate
"""

.. code-block:: python

def check_webdriver_details(webdriver_to_check: WebDriver, result_check_dict: dict) -> None:
"""
:param webdriver_to_check: what webdriver we want to check
:param result_check_dict: the dict include data name and value to check result_dict is valid or not
:return: None
Validate multiple WebDriver properties.

:param webdriver_to_check: WebDriver instance to validate
:param result_check_dict: dict of {property: expected_value}
"""

.. code-block:: python

def check_web_element_value(element_name: str, element_value: typing.Any, web_element_to_check: WebElement) -> None:
def check_web_element_value(element_name: str, element_value: Any, web_element_to_check: WebElement) -> None:
"""
:param element_name: the name of element we want to check
:param element_value: what value element should be
:param web_element_to_check: the dict include data name and value to check result_dict is valid or not
:return: None
Check a single WebElement property against an expected value.

:param element_name: property name (e.g., "tag_name", "enabled")
:param element_value: expected value
:param web_element_to_check: WebElement instance to validate
"""

.. code-block:: python

def check_web_element_details(web_element_to_check: WebElement, result_check_dict: dict) -> None:
"""
:param web_element_to_check: what web element we want to check
:param result_check_dict: the dict include data name and value to check result_dict is valid or not
:return: None
"""
Validate multiple WebElement properties.

:param web_element_to_check: WebElement instance to validate
:param result_check_dict: dict of {property: expected_value}
"""
57 changes: 40 additions & 17 deletions docs/source/API/utils/callback.rst
Original file line number Diff line number Diff line change
@@ -1,21 +1,44 @@
Callback API
----
============

``je_web_runner.utils.callback.callback_function_executor``

Class: CallbackFunctionExecutor
-------------------------------

Executes trigger functions with callback support.
Shares the same ``event_dict`` command mapping as the standard Executor.

.. code-block:: python

class CallbackFunctionExecutor:

event_dict: dict
# Same command mapping as Executor (WR_* commands)

def callback_function(
self,
trigger_function_name: str,
callback_function: Callable,
callback_function_param: Union[dict, list, None] = None,
callback_param_method: str = "kwargs",
**kwargs
):
"""
Execute a trigger function, then execute a callback function.

:param trigger_function_name: function name to trigger (must exist in event_dict)
:param callback_function: callback function to execute after trigger
:param callback_function_param: parameters for callback (dict for kwargs, list for args)
:param callback_param_method: "kwargs" or "args"
:param kwargs: parameters passed to the trigger function
:return: return value of the trigger function
:raises CallbackExecutorException: if trigger function not found or invalid param method
"""

Global Instance
---------------

.. code-block:: python

def callback_function(
self,
trigger_function_name: str,
callback_function: typing.Callable,
callback_function_param: [dict, None] = None,
callback_param_method: str = "kwargs",
**kwargs
):
"""
:param trigger_function_name: what function we want to trigger only accept function in event_dict
:param callback_function: what function we want to callback
:param callback_function_param: callback function's param only accept dict
:param callback_param_method: what type param will use on callback function only accept kwargs and args
:param kwargs: trigger_function's param
:return: trigger_function_name return value
"""
callback_executor = CallbackFunctionExecutor()
Loading
Loading