test: Migrate cypress tests batch 1 to playwright (#19569)

This commit is contained in:
Artem Sorokin
2025-09-16 16:11:51 +02:00
committed by GitHub
parent b480f495d9
commit a4fc24371d
19 changed files with 2573 additions and 239 deletions

View File

@@ -1,3 +1,5 @@
import { expect } from '@playwright/test';
import type { n8nPage } from '../pages/n8nPage';
export class CanvasComposer {
@@ -37,4 +39,62 @@ export class CanvasComposer {
await this.n8n.canvas.selectAll();
await this.copySelectedNodesWithToast();
}
/**
* Switch between editor and workflow history and back
*/
async switchBetweenEditorAndHistory(): Promise<void> {
await this.n8n.page.getByTestId('workflow-history-button').click();
await this.n8n.page.getByTestId('workflow-history-close-button').click();
await this.n8n.page.waitForLoadState();
await expect(this.n8n.canvas.getCanvasNodes().first()).toBeVisible();
await expect(this.n8n.canvas.getCanvasNodes().last()).toBeVisible();
}
/**
* Switch between editor and workflow list and back
*/
async switchBetweenEditorAndWorkflowList(): Promise<void> {
await this.n8n.page.getByTestId('menu-item').first().click();
await this.n8n.page.getByTestId('resources-list-item-workflow').first().click();
await expect(this.n8n.canvas.getCanvasNodes().first()).toBeVisible();
await expect(this.n8n.canvas.getCanvasNodes().last()).toBeVisible();
}
/**
* Zoom in and validate that zoom functionality works
*/
async zoomInAndCheckNodes(): Promise<void> {
await this.n8n.canvas.getCanvasNodes().first().waitFor();
const initialNodeSize = await this.n8n.page.evaluate(() => {
const firstNode = document.querySelector('[data-test-id="canvas-node"]');
if (!firstNode) {
throw new Error('Canvas node not found during initial measurement');
}
return firstNode.getBoundingClientRect().width;
});
for (let i = 0; i < 4; i++) {
await this.n8n.canvas.clickZoomInButton();
}
const finalNodeSize = await this.n8n.page.evaluate(() => {
const firstNode = document.querySelector('[data-test-id="canvas-node"]');
if (!firstNode) {
throw new Error('Canvas node not found during final measurement');
}
return firstNode.getBoundingClientRect().width;
});
// Validate zoom increased node sizes by at least 50%
const zoomWorking = finalNodeSize > initialNodeSize * 1.5;
if (!zoomWorking) {
throw new Error(
"Zoom functionality not working: nodes didn't scale properly. " +
`Initial: ${initialNodeSize.toFixed(1)}px, Final: ${finalNodeSize.toFixed(1)}px`,
);
}
}
}