mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-16 17:46:45 +00:00
57 lines
1.9 KiB
TypeScript
57 lines
1.9 KiB
TypeScript
import type { n8nPage } from '../pages/n8nPage';
|
|
|
|
/**
|
|
* A class for user interactions with workflows that go across multiple pages.
|
|
*/
|
|
export class WorkflowComposer {
|
|
constructor(private readonly n8n: n8nPage) {}
|
|
|
|
/**
|
|
* Executes a successful workflow and waits for the notification to be closed.
|
|
* This waits for http calls and also closes the notification.
|
|
*/
|
|
async executeWorkflowAndWaitForNotification(
|
|
notificationMessage: string,
|
|
options: { timeout?: number } = {},
|
|
) {
|
|
const { timeout = 3000 } = options;
|
|
const responsePromise = this.n8n.page.waitForResponse(
|
|
(response) =>
|
|
response.url().includes('/rest/workflows/') &&
|
|
response.url().includes('/run') &&
|
|
response.request().method() === 'POST',
|
|
);
|
|
|
|
await this.n8n.canvas.clickExecuteWorkflowButton();
|
|
await responsePromise;
|
|
await this.n8n.notifications.waitForNotificationAndClose(notificationMessage, { timeout });
|
|
}
|
|
|
|
/**
|
|
* Creates a new workflow by clicking the add workflow button and setting the name
|
|
* @param workflowName - The name of the workflow to create
|
|
*/
|
|
async createWorkflow(workflowName = 'My New Workflow') {
|
|
await this.n8n.workflows.clickAddWorkflowButton();
|
|
await this.n8n.canvas.setWorkflowName(workflowName);
|
|
await this.n8n.canvas.saveWorkflow();
|
|
}
|
|
|
|
/**
|
|
* Creates a new workflow by importing a JSON file
|
|
* @param fileName - The workflow JSON file name (e.g., 'test_pdf_workflow.json', will search in workflows folder)
|
|
* @param name - Optional custom name. If not provided, generates a unique name
|
|
* @returns The actual workflow name that was used
|
|
*/
|
|
async createWorkflowFromJsonFile(
|
|
fileName: string,
|
|
name?: string,
|
|
): Promise<{ workflowName: string }> {
|
|
const workflowName = name ?? `Imported Workflow ${Date.now()}`;
|
|
await this.n8n.goHome();
|
|
await this.n8n.workflows.clickAddWorkflowButton();
|
|
await this.n8n.canvas.importWorkflow(fileName, workflowName);
|
|
return { workflowName };
|
|
}
|
|
}
|