ci: Use composable for credential page load (no-changelog) (#14249)

This commit is contained in:
shortstacked
2025-03-28 13:54:08 +00:00
committed by GitHub
parent 157b9c0925
commit 970fab7e30
3 changed files with 16 additions and 15 deletions

View File

@@ -4,7 +4,7 @@ export const verifyCredentialsListPageIsLoaded = () => {
); );
}; };
export const navigateToCredentialsPageAndWaitForLoad = (credentialsPageUrl: string) => { export const loadCredentialsPage = (credentialsPageUrl: string) => {
cy.visit(credentialsPageUrl); cy.visit(credentialsPageUrl);
verifyCredentialsListPageIsLoaded(); verifyCredentialsListPageIsLoaded();
}; };

View File

@@ -39,7 +39,7 @@ describe('Sharing', { disableAutoLogin: true }, () => {
it('should create C1, W1, W2, share W1 with U3, as U2', () => { it('should create C1, W1, W2, share W1 with U3, as U2', () => {
cy.signinAsMember(0); cy.signinAsMember(0);
credentialsComposables.navigateToCredentialsPageAndWaitForLoad(credentialsPage.url); credentialsComposables.loadCredentialsPage(credentialsPage.url);
credentialsPage.getters.emptyListCreateCredentialButton().click(); credentialsPage.getters.emptyListCreateCredentialButton().click();
credentialsModal.getters.newCredentialTypeOption('Notion API').click(); credentialsModal.getters.newCredentialTypeOption('Notion API').click();
credentialsModal.getters.newCredentialTypeButton().click(); credentialsModal.getters.newCredentialTypeButton().click();
@@ -72,7 +72,7 @@ describe('Sharing', { disableAutoLogin: true }, () => {
it('should create C2, share C2 with U1 and U2, as U3', () => { it('should create C2, share C2 with U1 and U2, as U3', () => {
cy.signinAsMember(1); cy.signinAsMember(1);
credentialsComposables.navigateToCredentialsPageAndWaitForLoad(credentialsPage.url); credentialsComposables.loadCredentialsPage(credentialsPage.url);
credentialsPage.getters.emptyListCreateCredentialButton().click(); credentialsPage.getters.emptyListCreateCredentialButton().click();
credentialsModal.getters.newCredentialTypeOption('Airtable Personal Access Token API').click(); credentialsModal.getters.newCredentialTypeOption('Airtable Personal Access Token API').click();
credentialsModal.getters.newCredentialTypeButton().click(); credentialsModal.getters.newCredentialTypeButton().click();
@@ -153,7 +153,7 @@ describe('Sharing', { disableAutoLogin: true }, () => {
it('should automatically test C2 when opened by U2 sharee', () => { it('should automatically test C2 when opened by U2 sharee', () => {
cy.signinAsMember(0); cy.signinAsMember(0);
credentialsComposables.navigateToCredentialsPageAndWaitForLoad(credentialsPage.url); credentialsComposables.loadCredentialsPage(credentialsPage.url);
credentialsPage.getters.credentialCard('Credential C2').click(); credentialsPage.getters.credentialCard('Credential C2').click();
credentialsModal.getters.testSuccessTag().should('be.visible'); credentialsModal.getters.testSuccessTag().should('be.visible');
}); });
@@ -161,7 +161,7 @@ describe('Sharing', { disableAutoLogin: true }, () => {
it('should work for admin role on credentials created by others (also can share it with themselves)', () => { it('should work for admin role on credentials created by others (also can share it with themselves)', () => {
cy.signinAsMember(0); cy.signinAsMember(0);
credentialsComposables.navigateToCredentialsPageAndWaitForLoad(credentialsPage.url); credentialsComposables.loadCredentialsPage(credentialsPage.url);
credentialsPage.getters.createCredentialButton().click(); credentialsPage.getters.createCredentialButton().click();
credentialsModal.getters.newCredentialTypeOption('Notion API').click(); credentialsModal.getters.newCredentialTypeOption('Notion API').click();
credentialsModal.getters.newCredentialTypeButton().click({ force: true }); credentialsModal.getters.newCredentialTypeButton().click({ force: true });
@@ -172,7 +172,7 @@ describe('Sharing', { disableAutoLogin: true }, () => {
cy.signout(); cy.signout();
cy.signinAsAdmin(); cy.signinAsAdmin();
credentialsComposables.navigateToCredentialsPageAndWaitForLoad(credentialsPage.url); credentialsComposables.loadCredentialsPage(credentialsPage.url);
credentialsPage.getters.credentialCard('Credential C3').click(); credentialsPage.getters.credentialCard('Credential C3').click();
credentialsModal.getters.testSuccessTag().should('be.visible'); credentialsModal.getters.testSuccessTag().should('be.visible');
cy.get('input').should('not.have.length'); cy.get('input').should('not.have.length');
@@ -274,7 +274,7 @@ describe('Credential Usage in Cross Shared Workflows', () => {
cy.changeQuota('maxTeamProjects', -1); cy.changeQuota('maxTeamProjects', -1);
cy.reload(); cy.reload();
cy.signinAsOwner(); cy.signinAsOwner();
credentialsComposables.navigateToCredentialsPageAndWaitForLoad(credentialsPage.url); credentialsComposables.loadCredentialsPage(credentialsPage.url);
}); });
it('should only show credentials from the same team project', () => { it('should only show credentials from the same team project', () => {
@@ -318,7 +318,7 @@ describe('Credential Usage in Cross Shared Workflows', () => {
// As the member, create a new notion credential and a workflow // As the member, create a new notion credential and a workflow
cy.signinAsMember(); cy.signinAsMember();
credentialsComposables.navigateToCredentialsPageAndWaitForLoad(credentialsPage.url); credentialsComposables.loadCredentialsPage(credentialsPage.url);
credentialsPage.getters.createCredentialButton().click(); credentialsPage.getters.createCredentialButton().click();
credentialsModal.actions.createNewCredential('Notion API'); credentialsModal.actions.createNewCredential('Notion API');
cy.visit(workflowsPage.url); cy.visit(workflowsPage.url);
@@ -347,7 +347,7 @@ describe('Credential Usage in Cross Shared Workflows', () => {
// As the member, create a new notion credential // As the member, create a new notion credential
cy.signinAsMember(); cy.signinAsMember();
credentialsComposables.navigateToCredentialsPageAndWaitForLoad(credentialsPage.url); credentialsComposables.loadCredentialsPage(credentialsPage.url);
credentialsPage.getters.emptyListCreateCredentialButton().click(); credentialsPage.getters.emptyListCreateCredentialButton().click();
credentialsModal.actions.createNewCredential('Notion API'); credentialsModal.actions.createNewCredential('Notion API');
cy.visit(workflowsPage.url); cy.visit(workflowsPage.url);
@@ -364,20 +364,20 @@ describe('Credential Usage in Cross Shared Workflows', () => {
// As member 1, create a new notion credential. This should not show up. // As member 1, create a new notion credential. This should not show up.
cy.signinAsMember(1); cy.signinAsMember(1);
credentialsComposables.navigateToCredentialsPageAndWaitForLoad(credentialsPage.url); credentialsComposables.loadCredentialsPage(credentialsPage.url);
credentialsPage.getters.emptyListCreateCredentialButton().click(); credentialsPage.getters.emptyListCreateCredentialButton().click();
credentialsModal.actions.createNewCredential('Notion API'); credentialsModal.actions.createNewCredential('Notion API');
// As admin, create a new notion credential. This should show up. // As admin, create a new notion credential. This should show up.
cy.signinAsAdmin(); cy.signinAsAdmin();
credentialsComposables.navigateToCredentialsPageAndWaitForLoad(credentialsPage.url); credentialsComposables.loadCredentialsPage(credentialsPage.url);
credentialsPage.getters.createCredentialButton().click(); credentialsPage.getters.createCredentialButton().click();
credentialsModal.actions.createNewCredential('Notion API'); credentialsModal.actions.createNewCredential('Notion API');
// As member 0, create a new notion credential and a workflow and share it // As member 0, create a new notion credential and a workflow and share it
// with the global owner and the admin. // with the global owner and the admin.
cy.signinAsMember(); cy.signinAsMember();
credentialsComposables.navigateToCredentialsPageAndWaitForLoad(credentialsPage.url); credentialsComposables.loadCredentialsPage(credentialsPage.url);
credentialsPage.getters.emptyListCreateCredentialButton().click(); credentialsPage.getters.emptyListCreateCredentialButton().click();
credentialsModal.actions.createNewCredential('Notion API'); credentialsModal.actions.createNewCredential('Notion API');
cy.visit(workflowsPage.url); cy.visit(workflowsPage.url);
@@ -391,7 +391,7 @@ describe('Credential Usage in Cross Shared Workflows', () => {
// As the global owner, create a new notion credential and open the shared // As the global owner, create a new notion credential and open the shared
// workflow // workflow
cy.signinAsOwner(); cy.signinAsOwner();
credentialsComposables.navigateToCredentialsPageAndWaitForLoad(credentialsPage.url); credentialsComposables.loadCredentialsPage(credentialsPage.url);
credentialsPage.getters.createCredentialButton().click(); credentialsPage.getters.createCredentialButton().click();
credentialsModal.actions.createNewCredential('Notion API'); credentialsModal.actions.createNewCredential('Notion API');
@@ -407,7 +407,7 @@ describe('Credential Usage in Cross Shared Workflows', () => {
it('should show all personal credentials if the global owner owns the workflow', () => { it('should show all personal credentials if the global owner owns the workflow', () => {
// As member 0, create a new notion credential. // As member 0, create a new notion credential.
cy.signinAsMember(); cy.signinAsMember();
credentialsComposables.navigateToCredentialsPageAndWaitForLoad(credentialsPage.url); credentialsComposables.loadCredentialsPage(credentialsPage.url);
credentialsPage.getters.emptyListCreateCredentialButton().click(); credentialsPage.getters.emptyListCreateCredentialButton().click();
credentialsModal.actions.createNewCredential('Notion API'); credentialsModal.actions.createNewCredential('Notion API');

View File

@@ -1,5 +1,6 @@
import { type ICredentialType } from 'n8n-workflow'; import { type ICredentialType } from 'n8n-workflow';
import * as credentialsComposables from '../composables/credentialsComposables';
import { getCredentialSaveButton, saveCredential } from '../composables/modals/credential-modal'; import { getCredentialSaveButton, saveCredential } from '../composables/modals/credential-modal';
import { import {
AGENT_NODE_NAME, AGENT_NODE_NAME,
@@ -45,7 +46,7 @@ function deleteSelectedCredential() {
describe('Credentials', () => { describe('Credentials', () => {
beforeEach(() => { beforeEach(() => {
cy.visit(credentialsPage.url); credentialsComposables.loadCredentialsPage(credentialsPage.url);
}); });
it('should create a new credential using empty state', () => { it('should create a new credential using empty state', () => {