Files
n8n-enterprise-unlocked/packages/testing/playwright/tests/ui/28-resource-mapper.spec.ts

79 lines
3.7 KiB
TypeScript

import { E2E_TEST_NODE_NAME } from '../../config/constants';
import { test, expect } from '../../fixtures/base';
test.describe('Resource Mapper', () => {
test.beforeEach(async ({ n8n }) => {
await n8n.goHome();
await n8n.workflows.clickAddWorkflowButton();
await n8n.canvas.addNode(E2E_TEST_NODE_NAME, { action: 'Resource Mapping Component' });
});
test('should not retrieve list options when required params throw errors', async ({ n8n }) => {
const fieldsContainer = n8n.ndv.getResourceMapperFieldsContainer();
await expect(fieldsContainer).toBeVisible();
await expect(n8n.ndv.getResourceMapperParameterInputs()).toHaveCount(3);
await n8n.ndv.activateParameterExpressionEditor('fieldId');
await n8n.ndv.typeInExpressionEditor("{{ $('unknown')");
await expect(n8n.ndv.getInlineExpressionEditorPreview()).toContainText("node doesn't exist");
await n8n.ndv.refreshResourceMapperColumns();
await expect(n8n.ndv.getResourceMapperFieldsContainer()).toHaveCount(0);
});
test('should retrieve list options when optional params throw errors', async ({ n8n }) => {
await n8n.ndv.activateParameterExpressionEditor('otherField');
await n8n.ndv.typeInExpressionEditor("{{ $('unknown')");
await expect(n8n.ndv.getInlineExpressionEditorPreview()).toContainText("node doesn't exist");
await n8n.ndv.refreshResourceMapperColumns();
await expect(n8n.ndv.getResourceMapperFieldsContainer()).toBeVisible();
await expect(n8n.ndv.getResourceMapperParameterInputs()).toHaveCount(3);
});
test('should correctly delete single field', async ({ n8n }) => {
await n8n.ndv.fillParameterInputByName('id', '001');
await n8n.ndv.fillParameterInputByName('name', 'John');
await n8n.ndv.fillParameterInputByName('age', '30');
await n8n.ndv.execute();
await expect(n8n.ndv.getOutputTableHeaders().filter({ hasText: 'id' })).toBeVisible();
await expect(n8n.ndv.getOutputTableHeaders().filter({ hasText: 'name' })).toBeVisible();
await expect(n8n.ndv.getOutputTableHeaders().filter({ hasText: 'age' })).toBeVisible();
await n8n.ndv.getResourceMapperRemoveFieldButton('name').click();
await n8n.ndv.execute();
await expect(n8n.ndv.getParameterInput('id')).toBeVisible();
await expect(n8n.ndv.getOutputTableHeaders().filter({ hasText: 'id' })).toBeVisible();
await expect(n8n.ndv.getParameterInput('age')).toBeVisible();
await expect(n8n.ndv.getOutputTableHeaders().filter({ hasText: 'age' })).toBeVisible();
await expect(n8n.ndv.getParameterInput('name')).toHaveCount(0);
await expect(n8n.ndv.getOutputTableHeaders().filter({ hasText: 'name' })).toHaveCount(0);
});
test('should correctly delete all fields', async ({ n8n }) => {
await n8n.ndv.fillParameterInputByName('id', '001');
await n8n.ndv.fillParameterInputByName('name', 'John');
await n8n.ndv.fillParameterInputByName('age', '30');
await n8n.ndv.execute();
await expect(n8n.ndv.getOutputTableHeaders().filter({ hasText: 'id' })).toBeVisible();
await expect(n8n.ndv.getOutputTableHeaders().filter({ hasText: 'name' })).toBeVisible();
await expect(n8n.ndv.getOutputTableHeaders().filter({ hasText: 'age' })).toBeVisible();
await n8n.ndv.getResourceMapperColumnsOptionsButton().click();
await n8n.ndv.getResourceMapperRemoveAllFieldsOption().click();
await n8n.ndv.execute();
await expect(n8n.ndv.getParameterInput('id')).toBeVisible();
await expect(n8n.ndv.getOutputTableHeaders().filter({ hasText: 'id' })).toBeVisible();
await expect(n8n.ndv.getParameterInput('name')).toHaveCount(0);
await expect(n8n.ndv.getOutputTableHeaders().filter({ hasText: 'name' })).toHaveCount(0);
await expect(n8n.ndv.getParameterInput('age')).toHaveCount(0);
await expect(n8n.ndv.getOutputTableHeaders().filter({ hasText: 'age' })).toHaveCount(0);
});
});