Test Case ID

Test Objective

Test Steps

Expected Outcome

Test Type

Status

HITL-001

Validate basic HITLOperator functionality with single option selection

1. Create DAG with HITLOperator.
2. Set subject="Choose option", options="option1", "option2"
3. Trigger DAG and wait for human input
4. Select "option1" from UI
5. Verify task completion

Task completes successfully, XCom contains chosen_options="option1", params_input={}

Positive

Pass

HITL-002

Validate HITLOperator with multiple option selection

1. Create HITLOperator with multiple=True
2. Set options="opt1", "opt2", "opt3"

3. Trigger DAG and select multiple options "opt1", "opt3"

4. Verify task completion

Task completes successfully, XCom contains chosen_options="opt1", "opt3"

Positive

Pass

HITL-003

Validate HITLOperator with default values when no input is provided

1. Create HITLOperator with defaults="option1"
2. Set execution_timeout=30 seconds
3. Trigger DAG and wait for timeout

4. Verify default is used

Task completes with timeout, defaults are applied, chosen_options="option1"

Positive

Pass

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'
Import Error for DAG

Negative

Pass

HITL-005

Validate HITLOperator fails with multiple defaults when multiple=False

1. Create HITLOperator with multiple=False

2. Set defaults="opt1", "opt2"

3. Attempt to initialize operator

ValueError raised: 'More than one defaults given when "multiple" is set to False'

Import Error for DAG

Negative

Pass

HITL-006

Validate ApprovalOperator with approval selection

1. Create ApprovalOperator with subject="Approve this task"
2. Trigger DAG

3. Select "Approve" option

4. Verify downstream tasks execute

Task completes successfully, downstream tasks are executed, no tasks skipped

Positive

Pass

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

Pass

HITL-008

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

Pass

HITL-009

Validate ApprovalOperator fails when options parameter is provided

  1.  Attempt to create ApprovalOperator with options=["custom"]
  2. Initialize operator 

 ValueError raised: 'Passing options to ApprovalOperator is not allowed'

Negative

Pass

HITL-010

Validate HITLEntryOperator with params input

  1. Create HITLEntryOperator with params={"name": Param("", type="string")}
  2. Trigger DAG
  3. Enter "test_name" in the form field
  4. Submit form 

Task completes successfully, XCom contains params_input={"name": "test_name"}

Positive

Pass

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

Operator initialized with options="OK", defaults="OK"

Positive

Pass

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

Pass

HITL-013

Validate HITLOperator with execution timeout

1. Create HITLOperator with execution_timeout=timedelta(minutes=1)
2. Trigger DAG

3. Wait for timeout without providing input

4. Verify timeout handling

HITLTimeoutError is raised, task fails due to timeout

Edge

Pass

HITL-014

Validate HITLOperator template field rendering

1. Create HITLOperator with subject="{{ ds }}", body="{{ task_instance.task_id }}"
2. Trigger DAG
3. Verify templated values in UI

Subject shows execution date, body shows task ID

Positive

Pass

HITL-015

 Validate HITLOperator with invalid chosen options response

 1. Create HITLOperator with options=["opt1", "opt2"]

 2. Simulate invalid response with option "invalid".

 3. Process the response

.ValueError raised: 'Responses {"invalid"} not in ["opt1", "opt2"]'

Negative

Pass

HITL-016

Validate HITLOperator with mismatched params input

1. Create HITLOperator with params={"field1": Param("", type="string")}
2. Simulate response with params_input={"field2": "value"}
3. Process the response

 ValueError raised: 'params_input does not match params'

Negative

Pass

HITL-017

Validate HITLOperator trigger event error handling

1. Create HITLOperator
2. Simulate trigger event with error (non-timeout)

3. Process the error event

HITLTriggerEventError is raised

Negative


HITL-018

Validate HITLOperator XCom output structure

1. Create HITLOperator and complete successfully
2. Check XCom output structure
3. Verify data types and format

XCom contains HITLTriggerEventSuccessPayload with chosen_options (list) and params_input (dict)

Positive

Pass

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

Pass

HITL-020

Validate ApprovalOperator with no downstream tasks

1. Create ApprovalOperator as final task in DAG

2. Select "Reject" option<br/>
3. Verify completion

Task completes successfully, log shows "No downstream tasks; nothing to do."

Edge

Pass

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

Pass

HITL-022

Validate HITLOperator with complex markdown body

1. Create HITLOperator with body containing markdown

2. Include lists, bold text, code blocks
3. Trigger DAG and verify rendering

Markdown is properly rendered in UI for human review

Positive

Pass

HITL-024

Validate HITLOperator with empty body parameter

1. Create HITLOperator with body=None

2. Trigger DAG
3. Verify task execution and UI display

Task executes successfully, no body text displayed in UI

Edge

Pass

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

Pass

  • No labels