Diff Checker Node
two input ports: "expected" (Table – golden/reference), "actual" (Table – from workflow).
Properties:
- "tolerance" (number, default 0.001 – for floats),
- "ignoreColumns" (array of strings – skip these),
- "matchType" (dropdown: "Exact", "Superset", "Subset" – default "Exact"),
- "keyColumns" (array of strings – optional, for Superset/Subset),
- "failOn" (dropdown: "schema", "rows", "values", "all" – default "all"),
- "reportLimit" (number, default 10).
Output ports: 1, "diff" (Table of mismatches; empty if match).
UI Schema: description "Compares tables; fails on mismatch. 'matchType' allows partial checks."
Behavior: Category: Testing & Validation
Example 1: Exact Match (Passes)
Properties:
- matchType = "Exact"
- tolerance = 0.001
- ignoreColumns = [ { "id": 1, "name": "Alice", "age": 30.0, "score": 85.5 },
{ "id": 2, "name": "Bob", "age": 35.0, "score": 92.0 } { "id": 1, "name": "Alice", "age": 30.0005, "score": 85.5 },
{ "id": 2, "name": "Bob", "age": 35.0, "score": 92.0 }]
Expected Output:
- "diff": empty Table
- Workflow passes (age diff < 0.001 → match)
Example 2: Exact Fail (Floats Too Far)
Properties: same as above
Input – actual:
[{ "id": 1, "name": "Alice", "age": 30.1, "score": 85.5 },
{ "id": 2, "name": "Bob", "age": 35.0, "score": 92.0 } { "row": 0, "column": "age", "expected": 30.0, "actual": 30.1 }]
- Workflow fails: "Mismatch: 1 error"
Example 3: Superset (Extra Row OK)
Properties:
- matchType = "Superset"
- keyColumns = - tolerance = 0.001
Input – expected:
[{ "id": 1, "name": "Alice", "age": 30.0 },
{ "id": 2, "name": "Bob", "age": 35.0 },
{ "id": 3, "name": "Charlie", "age": 40.0 } { "id": 1, "name": "Alice", "age": 30.0 },
{ "id": 2, "name": "Bob", "age": 35.0 }]
Expected Output:
- "diff": empty Table
- Workflow passes (actual is subset of expected)
Example 4: Subset Fail (Missing Row)
Properties:
- matchType = "Subset"
- keyColumns = Input – expected:
[{ "id": 1, "name": "Alice" },
{ "id": 2, "name": "Bob" } ] (but workflow fails early: "Missing rows in actual")
- Message: "Mismatch: 1 missing row"
Example 5: Ignore Column + Exact
Properties:
- matchType = "Exact"
- ignoreColumns = - tolerance = 0.0
Input – expected: Input – actual:
[{ "id": 1, "name": "Alice", "score": 99.9 }]
Expected Output:
- "diff": empty Table
- Workflow passes (score ignored)
Example 6: Schema Fail
Properties:
Input – expected:
[{ "id": 1, "name": "Alice" }]
Input – actual: Expected Output:
- Workflow fails: "Schema mismatch" (column names differ)
- No "diff" output
Diff Checker Node
two input ports: "expected" (Table – golden/reference), "actual" (Table – from workflow).
Properties:
Output ports: 1, "diff" (Table of mismatches; empty if match).
UI Schema: description "Compares tables; fails on mismatch. 'matchType' allows partial checks."
Behavior: Category: Testing & Validation
Example 1: Exact Match (Passes)
Properties:
{ "id": 2, "name": "Bob", "age": 35.0, "score": 92.0 } { "id": 1, "name": "Alice", "age": 30.0005, "score": 85.5 },
{ "id": 2, "name": "Bob", "age": 35.0, "score": 92.0 }]
Expected Output:
Example 2: Exact Fail (Floats Too Far)
Properties: same as above
Input – actual:
[{ "id": 1, "name": "Alice", "age": 30.1, "score": 85.5 },
{ "id": 2, "name": "Bob", "age": 35.0, "score": 92.0 } { "row": 0, "column": "age", "expected": 30.0, "actual": 30.1 }]
Example 3: Superset (Extra Row OK)
Properties:
Input – expected:
[{ "id": 1, "name": "Alice", "age": 30.0 },
{ "id": 2, "name": "Bob", "age": 35.0 },
{ "id": 3, "name": "Charlie", "age": 40.0 } { "id": 1, "name": "Alice", "age": 30.0 },
{ "id": 2, "name": "Bob", "age": 35.0 }]
Expected Output:
Example 4: Subset Fail (Missing Row)
Properties:
[{ "id": 1, "name": "Alice" },
{ "id": 2, "name": "Bob" } ] (but workflow fails early: "Missing rows in actual")
Example 5: Ignore Column + Exact
Properties:
Input – expected: Input – actual:
[{ "id": 1, "name": "Alice", "score": 99.9 }]
Expected Output:
Example 6: Schema Fail
Properties:
Input – expected:
[{ "id": 1, "name": "Alice" }]
Input – actual: Expected Output: