test: Address flakes in tags tests, add test for tag count persistence when reopening dropdown after save (#22160)

This commit is contained in:
Artem Sorokin
2025-11-21 17:50:05 +01:00
committed by GitHub
parent 69ff592ffd
commit 731a6397f7
2 changed files with 48 additions and 10 deletions
@@ -290,9 +290,6 @@ export class CanvasPage extends BasePage {
await this.page.locator('body').click({ position: { x: 0, y: 0 } });
}
getWorkflowTags() {
return this.page.getByTestId('workflow-tags').locator('.el-tag');
}
async activateWorkflow() {
const switchElement = this.page.getByTestId('workflow-activate-switch');
const statusElement = this.page.getByTestId('workflow-activator-status');
@@ -375,10 +372,26 @@ export class CanvasPage extends BasePage {
.locator('.el-tag:not(.count-container)');
}
getSavedWorkflowTagPills(): Locator {
return this.page.getByTestId('workflow-tags').locator('.n8n-tag:not(.count-container)');
}
getTagsDropdown(): Locator {
return this.page.getByTestId('tags-dropdown');
}
getWorkflowTagsDropdown(): Locator {
return this.page.getByTestId('workflow-tags-dropdown');
}
getWorkflowTags(): Locator {
return this.page.getByTestId('workflow-tags');
}
getTagCloseButton(): Locator {
return this.getWorkflowTagsDropdown().locator('.el-tag__close');
}
async typeInTagInput(text: string): Promise<void> {
const input = this.page.getByTestId('workflow-tags-container').locator('input').first();
await input.fill(text);
@@ -89,8 +89,6 @@ test.describe('Workflow tags - Tag operations', () => {
await n8n.canvas.tagsManagerModal.clickDoneButton();
await n8n.canvas.clickCreateTagButton();
await expect(n8n.canvas.getTagItemsInDropdown()).toHaveCount(0);
for (const tag of tags) {
await expect(n8n.canvas.getTagItemInDropdownByName(tag.name)).not.toBeAttached();
}
@@ -117,13 +115,13 @@ test.describe('Workflow tags - Tag operations', () => {
await n8n.canvas.clickNthTagPill(0);
// Click X on tag pill inside the workflow-tags-dropdown component
await n8n.page.getByTestId('workflow-tags-dropdown').locator('.el-tag__close').first().click();
await n8n.canvas.getTagCloseButton().first().click();
await n8n.canvas.clickOutsideModal();
await n8n.canvas.clickWorkflowTagsArea();
await expect(n8n.canvas.getTagPills()).toHaveCount(4);
await expect(n8n.canvas.getWorkflowTagsDropdown()).not.toBeAttached();
await expect(n8n.canvas.getWorkflowSaveButton()).toContainText('Saved');
await expect(n8n.canvas.getSavedWorkflowTagPills()).toHaveCount(4);
});
test('should detach tag by clicking selected item in dropdown', async ({ n8n, api }) => {
@@ -147,9 +145,36 @@ test.describe('Workflow tags - Tag operations', () => {
await n8n.canvas.getSelectedTagItems().first().click();
await n8n.canvas.clickOutsideModal();
await expect(n8n.canvas.getWorkflowTagsDropdown()).not.toBeAttached();
await expect(n8n.canvas.getWorkflowSaveButton()).toContainText('Saved');
await expect(n8n.canvas.getSavedWorkflowTagPills()).toHaveCount(4);
});
test('should show correct tag count when reopening after save', async ({ n8n, api }) => {
const tags = await Promise.all([
api.tags.create(`reopen-${nanoid(6)}`),
api.tags.create(`reopen-${nanoid(6)}`),
api.tags.create(`reopen-${nanoid(6)}`),
]);
await n8n.start.fromBlankCanvas();
await n8n.canvas.clickCreateTagButton();
for (const tag of tags) {
await n8n.canvas.getTagItemInDropdownByName(tag.name).click();
}
await expect(n8n.canvas.getTagPills()).toHaveCount(3);
await n8n.canvas.clickOutsideModal();
await expect(n8n.canvas.getWorkflowTagsDropdown()).not.toBeAttached();
await expect(n8n.canvas.getWorkflowSaveButton()).toContainText('Saved');
await n8n.canvas.clickWorkflowTagsArea();
await expect(n8n.canvas.getTagPills()).toHaveCount(4);
await expect(n8n.canvas.getWorkflowTagsDropdown()).toBeVisible();
await expect(n8n.canvas.getTagPills()).toHaveCount(3);
});
test('should not show non-existing tag as selectable option', async ({ n8n, api }) => {