DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
Test Case ID | Test Objective | Test Steps | Expected Outcome | Test Type |
HITL-001 | Validate basic HITLOperator functionality with single option selection | 1. Create DAG with |
HITLOperator. |
|
input |
UI | Task completes successfully, XCom contains chosen_options="option1", params_input={} | Positive |
HITL-002 | Validate HITLOperator with multiple option selection | 1. Create HITLOperator with multiple= |
True |
3. Trigger DAG and select multiple options "opt1", "opt3" |
4. Verify task completion | Task completes successfully, XCom contains chosen_options="opt1", "opt3" | Positive |
HITL-003 | Validate HITLOperator with default values when no input is provided | 1. Create HITLOperator with defaults="option1" |
|
seconds |
timeout 4. Verify default is used | Task completes with timeout, defaults are applied, chosen_options="option1" | Positive |
HITL-004 | Validate HITLOperator fails with invalid defaults | 1. Create HITLOperator with options="opt1", "opt2" |
2. Set defaults="invalid_option" |
3. Attempt to initialize operator | ValueError raised: 'defaults should be a subset of options' | Negative |
HITL-005 | Validate HITLOperator fails with multiple defaults when multiple=False | 1. Create HITLOperator with multiple= |
False 2. Set defaults="opt1", "opt2" |
| ValueError raised: 'More than one defaults given when "multiple" is set to False' | Negative |
HITL-006 | Validate ApprovalOperator with approval selection | 1. Create ApprovalOperator with subject="Approve this task" |
|
DAG 3. Select "Approve" |
option 4. Verify downstream tasks execute | Task completes successfully, downstream tasks are executed, no tasks skipped | Positive |
HITL-007 | Validate ApprovalOperator with rejection and skip downstream | 1. Create ApprovalOperator with downstream |
tasks 2. Trigger |
DAG 3. Select "Reject" |
option 4. Verify downstream task skipping | Task completes successfully, all downstream tasks are skipped | Positive |
HITL-008 | Validate ApprovalOperator |
with rejection and skip downstream | 1. Attempt to create ApprovalOperator with options="custom" |
2. Initialize operator | ValueError raised: 'Passing options to ApprovalOperator is not allowed' | Negative |
HITL-009 | Validate ApprovalOperator fails when multiple parameter is provided | 1. Attempt to create ApprovalOperator with multiple= |
True 2. Initialize operator | ValueError raised: 'Passing multiple to ApprovalOperator is not allowed' | Negative |
HITL-011 | Validate HITLEntryOperator with default OK option | 1. Create HITLEntryOperator without specifying |
options 2. Trigger |
DAG 3. Verify default options and defaults are set | Positive | |
HITL-012 | Validate HITLBranchOperator with valid branch selection | 1. Create HITLBranchOperator with options="task_1", "task_2" |
2. Create corresponding downstream |
tasks 3. Trigger DAG and select "task_1" |
4. Verify branching behavior | Only task_1 executes, task_2 is skipped via branch logic | Positive |
HITL-013 | Validate HITLOperator with execution timeout | 1. Create HITLOperator with execution_timeout=timedelta(minutes=1) |
|
DAG 3. Wait for timeout without providing |
input 4. Verify timeout handling | HITLTimeoutError is raised, task fails due to timeout | Edge |
HITL-014 | Validate HITLOperator template field rendering | 1. Create HITLOperator with subject="{{ ds }}", body="{{ task_instance.task_id }}" |
|
DAG | Subject shows execution date, body shows task ID | Positive |
HITL-017 | Validate HITLOperator trigger event error handling | 1. Create |
HITLOperator |
3. Process the error event | HITLTriggerEventError is raised | Negative |
HITL-018 | Validate HITLOperator XCom output structure | 1. Create HITLOperator and complete |
successfully |
structure | XCom contains HITLTriggerEventSuccessPayload with chosen_options (list) and params_input (dict) | Positive |
HITL-019 | Validate ApprovalOperator with ignore_downstream_trigger_rules=True | 1. Create ApprovalOperator with ignore_downstream_trigger_rules= |
True 2. Set up complex downstream task |
dependencies 3. Select "Reject" and verify skipping behavior | All flat downstream relatives are skipped, not just direct relatives | Positive |
HITL-020 | Validate ApprovalOperator with no downstream tasks | 1. Create ApprovalOperator as final task in |
DAG 2. Select "Reject" option<br/ |
> | Task completes successfully, log shows "No downstream tasks; nothing to do." | Edge |
HITL-021 | Validate HITLOperator serialized_params property | 1. Create HITLOperator with ParamsDict |
params 2. Access serialized_params |
property 3. Verify output format | Returns dict representation of ParamsDict.dump() | Positive |
HITL-022 | Validate HITLOperator with complex markdown body | 1. Create HITLOperator with body containing |
markdown 2. Include lists, bold text, code |
blocks | Markdown is properly rendered in UI for human review | Positive |
HITL-023 | Validate HITL functionality requires Airflow 3.1+ | 1. Test import of HITL operators in pre-3.1 |
environment | AirflowOptionalProviderFeatureException raised: "Human in the loop functionality needs Airflow 3.1+" | Negative |
HITL-024 | Validate HITLOperator with empty body parameter | 1. Create HITLOperator with body= |
None 2. Trigger |
DAG | Task executes successfully, no body text displayed in UI | Edge |
HITL-025 | Validate concurrent HITL tasks in same DAG | 1. Create DAG with multiple parallel |
HITLOperators 2. Trigger |
DAG 3. Respond to each HITL task |
independently 4. Verify all complete successfully | All HITL tasks complete independently, no interference between tasks | Positive |