mirror of
https://github.com/n8n-io/n8n.git
synced 2026-06-02 17:57:06 +02:00
87 lines
2.2 KiB
TypeScript
87 lines
2.2 KiB
TypeScript
import { test, expect } from '../../../fixtures/base';
|
|
|
|
test.use({ capability: 'email' });
|
|
|
|
test(
|
|
'EmailSend node sends via SMTP @capability:email',
|
|
{
|
|
annotation: [{ type: 'owner', description: 'NODES' }],
|
|
},
|
|
async ({ api, n8n, services }) => {
|
|
// Sign in to use internal APIs for creating credentials and workflows
|
|
const mailpit = services.mailpit;
|
|
|
|
// Create SMTP credential targeting Mailpit (uses internal hostname in container mode, localhost in local mode)
|
|
const smtpCredential = await api.credentials.createCredential({
|
|
name: 'SMTP (Test)',
|
|
type: 'smtp',
|
|
data: {
|
|
user: '',
|
|
password: '',
|
|
host: mailpit.smtpHost,
|
|
port: mailpit.smtpPort,
|
|
secure: false,
|
|
disableStartTls: true,
|
|
},
|
|
});
|
|
|
|
// Define a workflow with Manual Trigger -> EmailSend
|
|
const toEmail = 'test@recipient.local';
|
|
const subject = 'Playwright Mailpit SMTP';
|
|
const workflowDefinition = {
|
|
name: 'Mailpit EmailSend Workflow',
|
|
nodes: [
|
|
{
|
|
id: '1',
|
|
name: 'Manual Trigger',
|
|
type: 'n8n-nodes-base.manualTrigger',
|
|
typeVersion: 1,
|
|
position: [0, 0],
|
|
},
|
|
{
|
|
id: '2',
|
|
name: 'Email',
|
|
type: 'n8n-nodes-base.emailSend',
|
|
typeVersion: 2,
|
|
position: [300, 0],
|
|
parameters: {
|
|
fromEmail: 'test@n8n.local',
|
|
toEmail,
|
|
subject,
|
|
emailFormat: 'text',
|
|
text: 'Hello from n8n E2E test',
|
|
},
|
|
credentials: {
|
|
smtp: {
|
|
id: smtpCredential.id,
|
|
name: smtpCredential.name,
|
|
},
|
|
},
|
|
},
|
|
],
|
|
connections: {
|
|
'Manual Trigger': {
|
|
main: [[{ node: 'Email', type: 'main', index: 0 }]],
|
|
},
|
|
},
|
|
active: false,
|
|
} as const;
|
|
|
|
const { workflowId } = await api.workflows.createWorkflowFromDefinition(
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
workflowDefinition as any,
|
|
{ makeUnique: true },
|
|
);
|
|
|
|
// Execute the workflow via UI API endpoint by navigating to the canvas and clicking run
|
|
await n8n.page.goto(`/workflow/${workflowId}`);
|
|
await n8n.workflowComposer.executeWorkflowAndWaitForNotification(
|
|
'Workflow executed successfully',
|
|
);
|
|
|
|
const msg = await mailpit.waitForMessage({ to: toEmail, subject });
|
|
|
|
expect(msg).toBeTruthy();
|
|
},
|
|
);
|