Files
n8n-enterprise-unlocked/packages/testing/playwright/tests/ui/47-subworkflow-debugging.spec.ts

103 lines
4.4 KiB
TypeScript

import { test, expect } from '../../fixtures/base';
const WORKFLOW_FILE = 'Subworkflow-debugging-execute-workflow.json';
test.describe('Subworkflow debugging', () => {
test.beforeEach(async ({ n8n }) => {
await n8n.start.fromImportedWorkflow(WORKFLOW_FILE);
await expect(n8n.canvas.getCanvasNodes()).toHaveCount(11);
await n8n.canvas.clickZoomToFitButton();
await n8n.canvas.clickExecuteWorkflowButton();
});
test.describe('can inspect sub executed workflow', () => {
test('(Run once with all items/ Wait for Sub-workflow completion) (default behavior)', async ({
n8n,
}) => {
await n8n.canvas.openNode('Execute Workflow with param');
await expect(n8n.ndv.outputPanel.getItemsCount()).toContainText('2 items, 1 sub-execution');
await expect(n8n.ndv.outputPanel.getRelatedExecutionLink()).toContainText(
'View sub-execution',
);
await expect(n8n.ndv.outputPanel.getRelatedExecutionLink()).toHaveAttribute('href', /.+/);
await expect(n8n.ndv.outputPanel.getTableHeaders()).toHaveCount(2);
await expect(n8n.ndv.outputPanel.getTbodyCell(0, 0)).toHaveText('world Natalie Moore');
});
test('(Run once for each item/ Wait for Sub-workflow completion) param1', async ({ n8n }) => {
await n8n.canvas.openNode('Execute Workflow with param1');
await expect(n8n.ndv.outputPanel.getItemsCount()).toContainText('2 items, 2 sub-execution');
await expect(n8n.ndv.outputPanel.getRelatedExecutionLink()).not.toBeAttached();
await expect(n8n.ndv.outputPanel.getTableHeaders()).toHaveCount(3);
await expect(n8n.ndv.outputPanel.getTbodyCell(0, 0).locator('a')).toHaveAttribute(
'href',
/.+/,
);
await expect(n8n.ndv.outputPanel.getTbodyCell(0, 1)).toHaveText('world Natalie Moore');
});
test('(Run once with all items/ Wait for Sub-workflow completion) param2', async ({ n8n }) => {
await n8n.canvas.openNode('Execute Workflow with param2');
await expect(n8n.ndv.outputPanel.getItemsCount()).not.toBeAttached();
await expect(n8n.ndv.outputPanel.getRelatedExecutionLink()).toContainText(
'View sub-execution',
);
await expect(n8n.ndv.outputPanel.getRelatedExecutionLink()).toHaveAttribute('href', /.+/);
await expect(n8n.ndv.outputPanel.getRunSelectorInput()).toHaveValue(
'2 of 2 (3 items, 1 sub-execution)',
);
await expect(n8n.ndv.outputPanel.getTableHeaders()).toHaveCount(6);
await expect(n8n.ndv.outputPanel.getTableHeader(0)).toHaveText('uid');
await expect(n8n.ndv.outputPanel.getTableRows()).toHaveCount(4);
await expect(n8n.ndv.outputPanel.getTbodyCell(0, 1)).toContainText('Jon_Ebert@yahoo.com');
await n8n.ndv.changeOutputRunSelector('1 of 2 (2 items, 1 sub-execution)');
await expect(n8n.ndv.outputPanel.getRunSelectorInput()).toHaveValue(
'1 of 2 (2 items, 1 sub-execution)',
);
await expect(n8n.ndv.outputPanel.getTableHeaders()).toHaveCount(6);
await expect(n8n.ndv.outputPanel.getTableHeader(0)).toHaveText('uid');
await expect(n8n.ndv.outputPanel.getTableRows()).toHaveCount(3);
await expect(n8n.ndv.outputPanel.getTbodyCell(0, 1)).toContainText('Terry.Dach@hotmail.com');
});
test('(Run once for each item/ Wait for Sub-workflow completion) param3', async ({ n8n }) => {
await n8n.canvas.openNode('Execute Workflow with param3');
await expect(n8n.ndv.outputPanel.getRunSelectorInput()).toHaveValue(
'2 of 2 (3 items, 3 sub-executions)',
);
await expect(n8n.ndv.outputPanel.getTableHeaders()).toHaveCount(7);
await expect(n8n.ndv.outputPanel.getTableHeader(1)).toHaveText('uid');
await expect(n8n.ndv.outputPanel.getTableRows()).toHaveCount(4);
await expect(n8n.ndv.outputPanel.getTbodyCell(0, 0).locator('a')).toHaveAttribute(
'href',
/.+/,
);
await expect(n8n.ndv.outputPanel.getTbodyCell(0, 2)).toContainText('Jon_Ebert@yahoo.com');
await n8n.ndv.changeOutputRunSelector('1 of 2 (2 items, 2 sub-executions)');
await expect(n8n.ndv.outputPanel.getRunSelectorInput()).toHaveValue(
'1 of 2 (2 items, 2 sub-executions)',
);
await expect(n8n.ndv.outputPanel.getTableHeaders()).toHaveCount(7);
await expect(n8n.ndv.outputPanel.getTableHeader(1)).toHaveText('uid');
await expect(n8n.ndv.outputPanel.getTableRows()).toHaveCount(3);
await expect(n8n.ndv.outputPanel.getTbodyCell(0, 0).locator('a')).toHaveAttribute(
'href',
/.+/,
);
await expect(n8n.ndv.outputPanel.getTbodyCell(0, 2)).toContainText('Terry.Dach@hotmail.com');
});
});
});